Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.d/temporal-context-cli.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
- `tepp_api` loopback `tepp-temporal-context query` posts a cutoff-safe LineageWeave temporal-context request to `tepp-loopback` (`POST /v1/temporal-context`, ADR 0027). Metric-free `association_not_causal` JSON only. `tepp.scientific_acceptance.v1` never appears. Does not infer causality. Not analysis-run CLIs, not export CLI, not persistence.
1 change: 1 addition & 0 deletions DOCUMENTATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ TEPP's approved PRD v0.4 and implementation plan are the primary product baselin
| Architecture | [`ARCHITECTURE.md`](ARCHITECTURE.md) |
| Modular/API integration contract | [`docs/API_CONTRACT.md`](docs/API_CONTRACT.md) |
| naruon modular consumer contract | [`docs/connectors/naruon-artifact-consumer.md`](docs/connectors/naruon-artifact-consumer.md) |
| Temporal-context CLI doctoring | [`docs/research/temporal-context-cli.md`](docs/research/temporal-context-cli.md) |
| contextual-orchestrator interpretation port | [`docs/connectors/contextual-orchestrator-interpretation-port.md`](docs/connectors/contextual-orchestrator-interpretation-port.md) |
| Orchestrator live HTTP doctoring | [`docs/research/orchestrator-live-http.md`](docs/research/orchestrator-live-http.md) |
| UML/runtime/scientific flows | [`docs/UML.md`](docs/UML.md) |
Expand Down
6 changes: 6 additions & 0 deletions crates/tepp_api/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,11 @@ path = "src/bin/tepp_loopback.rs"
test = false
bench = false

[[bin]]
name = "tepp-temporal-context"
path = "src/bin/tepp_temporal_context.rs"
test = false
bench = false

[lints]
workspace = true
37 changes: 37 additions & 0 deletions crates/tepp_api/src/bin/tepp_temporal_context.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
//! Operator CLI for loopback `LineageWeave` temporal-context POST.

use std::io::{self, IsTerminal};
use std::process::ExitCode;

use tepp_api::{
ApiError, TemporalContextCliInvocation, execute_temporal_context_cli,
read_temporal_context_cli_stdin, render_temporal_context_cli_stdout,
};

fn main() -> ExitCode {
match run() {
Ok(()) => ExitCode::SUCCESS,
Err(_) => ExitCode::FAILURE,
}
}

fn run() -> Result<(), ApiError> {
let args: Vec<String> = std::env::args().skip(1).collect();
match args.first().map(String::as_str) {
Some("query") => run_query(&args),
_ => Err(ApiError::InvalidWirePayload),
}
}

fn run_query(args: &[String]) -> Result<(), ApiError> {
let body = read_temporal_context_cli_stdin(io::stdin().is_terminal(), io::stdin())?;
let invocation = TemporalContextCliInvocation::from_args(args, body)?;
let response = execute_temporal_context_cli(&invocation)?;
let stdout = render_temporal_context_cli_stdout(&invocation, &response)?;
println!("{stdout}");
if (200..300).contains(&response.status_code) {
Ok(())
} else {
Err(ApiError::InvalidWirePayload)
}
}
15 changes: 15 additions & 0 deletions crates/tepp_api/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ mod project_history;
mod project_journey;
mod provider_payload;
mod temporal_context;
mod temporal_context_cli;
mod wire;

/// Terminal analysis-result contract version constant.
Expand Down Expand Up @@ -282,3 +283,17 @@ pub use temporal_context::TemporalContextTimelineEvent;
pub use temporal_context::TemporalTransitionGapCandidate;
/// Build a cutoff-safe, non-causal temporal context.
pub use temporal_context::build_temporal_context;
/// One validated temporal-context CLI invocation.
pub use temporal_context_cli::TemporalContextCliInvocation;
/// Loopback temporal-context CLI verb.
pub use temporal_context_cli::TemporalContextCliVerb;
/// Compose loopback temporal-context POST bytes for a CLI invocation.
pub use temporal_context_cli::compose_temporal_context_cli_http;
/// Dispatch a temporal-context CLI invocation against an in-process listener.
pub use temporal_context_cli::dispatch_temporal_context_cli;
/// Execute a temporal-context CLI invocation over loopback TCP.
pub use temporal_context_cli::execute_temporal_context_cli;
/// Read leftover stdin for the temporal-context CLI.
pub use temporal_context_cli::read_temporal_context_cli_stdin;
/// Render temporal-context CLI stdout with metric-free gates.
pub use temporal_context_cli::render_temporal_context_cli_stdout;
Loading
Loading