@consiliency/omnigent-transport 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/capability-probe.d.ts +9 -0
- package/dist/capability-probe.d.ts.map +1 -0
- package/dist/capability-probe.js +40 -0
- package/dist/capability-probe.js.map +1 -0
- package/dist/capability-store.d.ts +13 -0
- package/dist/capability-store.d.ts.map +1 -0
- package/dist/capability-store.js +10 -0
- package/dist/capability-store.js.map +1 -0
- package/dist/cli-client.d.ts +22 -0
- package/dist/cli-client.d.ts.map +1 -0
- package/dist/cli-client.js +281 -0
- package/dist/cli-client.js.map +1 -0
- package/dist/contract-fixtures.d.ts +111 -0
- package/dist/contract-fixtures.d.ts.map +1 -0
- package/dist/contract-fixtures.js +36 -0
- package/dist/contract-fixtures.js.map +1 -0
- package/dist/event-mapper.d.ts +21 -0
- package/dist/event-mapper.d.ts.map +1 -0
- package/dist/event-mapper.js +213 -0
- package/dist/event-mapper.js.map +1 -0
- package/dist/failure-mapper.d.ts +13 -0
- package/dist/failure-mapper.d.ts.map +1 -0
- package/dist/failure-mapper.js +261 -0
- package/dist/failure-mapper.js.map +1 -0
- package/dist/fake-omnigent-server.d.ts +25 -0
- package/dist/fake-omnigent-server.d.ts.map +1 -0
- package/dist/fake-omnigent-server.js +425 -0
- package/dist/fake-omnigent-server.js.map +1 -0
- package/dist/fixtures/discovery/capability-probes.json +142 -0
- package/dist/fixtures/discovery/cli-surface.json +76 -0
- package/dist/fixtures/discovery/http-surface.json +207 -0
- package/dist/fixtures/discovery/source-metadata.json +108 -0
- package/dist/fixtures/errors/child-session-blocked.json +29 -0
- package/dist/fixtures/errors/close-session-gap.json +24 -0
- package/dist/fixtures/errors/harness-override-blocked.json +18 -0
- package/dist/fixtures/errors/invalid-event-400.json +21 -0
- package/dist/fixtures/events/cancel-interrupt.json +44 -0
- package/dist/fixtures/events/dual-terminal-markers.json +28 -0
- package/dist/fixtures/events/malformed-sse-skip.json +31 -0
- package/dist/fixtures/events/normal-terminal.json +54 -0
- package/dist/fixtures/events/reconnect-snapshot-dedupe.json +27 -0
- package/dist/fixtures/events/v0-4-noop-events.json +54 -0
- package/dist/fixtures/events/v0-5-noop-events.json +40 -0
- package/dist/fixtures/fake-server/README.md +38 -0
- package/dist/fixtures/fake-server/scenarios.json +112 -0
- package/dist/history-mapper.d.ts +13 -0
- package/dist/history-mapper.d.ts.map +1 -0
- package/dist/history-mapper.js +19 -0
- package/dist/history-mapper.js.map +1 -0
- package/dist/http-client.d.ts +39 -0
- package/dist/http-client.d.ts.map +1 -0
- package/dist/http-client.js +128 -0
- package/dist/http-client.js.map +1 -0
- package/dist/http-provider.d.ts +18 -0
- package/dist/http-provider.d.ts.map +1 -0
- package/dist/http-provider.js +195 -0
- package/dist/http-provider.js.map +1 -0
- package/dist/hybrid-provider.d.ts +26 -0
- package/dist/hybrid-provider.d.ts.map +1 -0
- package/dist/hybrid-provider.js +72 -0
- package/dist/hybrid-provider.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/process-manager.d.ts +39 -0
- package/dist/process-manager.d.ts.map +1 -0
- package/dist/process-manager.js +83 -0
- package/dist/process-manager.js.map +1 -0
- package/dist/sse-stream.d.ts +8 -0
- package/dist/sse-stream.d.ts.map +1 -0
- package/dist/sse-stream.js +80 -0
- package/dist/sse-stream.js.map +1 -0
- package/dist/types.d.ts +144 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +80 -0
- package/dist/types.js.map +1 -0
- package/package.json +23 -0
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "omnigent.event_fixture.v1",
|
|
3
|
+
"redaction": "metadata_only",
|
|
4
|
+
"fixture": "v0_5_noop_events",
|
|
5
|
+
"events": [
|
|
6
|
+
{
|
|
7
|
+
"type": "session.mcp_startup",
|
|
8
|
+
"terminal": false,
|
|
9
|
+
"servers": {
|
|
10
|
+
"safe-server": {
|
|
11
|
+
"status": "starting",
|
|
12
|
+
"error": null
|
|
13
|
+
},
|
|
14
|
+
"failed-server": {
|
|
15
|
+
"status": "failed",
|
|
16
|
+
"error": "metadata_only_startup_failure"
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"type": "response.policy_denied",
|
|
22
|
+
"terminal": false,
|
|
23
|
+
"phase": "tool_call",
|
|
24
|
+
"reason": "metadata_only_policy_denied"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"expected_provider_behavior": "parse as known v0.5 events and no-op while preserving metadata",
|
|
28
|
+
"provenance": [
|
|
29
|
+
{
|
|
30
|
+
"kind": "tagged_source",
|
|
31
|
+
"path": "openapi.json",
|
|
32
|
+
"ref": "v0.5.1"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"kind": "tagged_source",
|
|
36
|
+
"path": "omnigent/server/schemas.py",
|
|
37
|
+
"ref": "v0.5.1"
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Omnigent Fake-Server Fixture Contract
|
|
2
|
+
|
|
3
|
+
These fixtures are metadata-only inputs for downstream fake-server and transport
|
|
4
|
+
tests. They intentionally capture schema shape, provenance, redaction posture,
|
|
5
|
+
and scenario boundaries instead of raw provider payload dumps.
|
|
6
|
+
|
|
7
|
+
## schema
|
|
8
|
+
|
|
9
|
+
- Discovery fixtures use `omnigent.*.v1` metadata contracts.
|
|
10
|
+
- Event fixtures use `omnigent.event_fixture.v1`.
|
|
11
|
+
- Error fixtures use `omnigent.error_fixture.v1`.
|
|
12
|
+
- Scenario catalog uses `omnigent.fake_server_scenarios.v1`.
|
|
13
|
+
|
|
14
|
+
## provenance
|
|
15
|
+
|
|
16
|
+
- Every fixture points back to the tagged upstream source that justified it.
|
|
17
|
+
- The freeze target is `omnigent` `v0.5.1`.
|
|
18
|
+
- `main` observations are metadata only and are not authoritative for the fake
|
|
19
|
+
server unless a later contract freeze re-pins them.
|
|
20
|
+
|
|
21
|
+
## redaction
|
|
22
|
+
|
|
23
|
+
- `redaction` is always `metadata_only`.
|
|
24
|
+
- Do not add secrets, bearer tokens, local env dumps, raw transcripts, or full
|
|
25
|
+
provider payload bodies to this directory.
|
|
26
|
+
|
|
27
|
+
## scenario
|
|
28
|
+
|
|
29
|
+
- Each scenario in `scenarios.json` maps required provider capabilities to the
|
|
30
|
+
minimum fixtures needed to simulate or normalize that case.
|
|
31
|
+
- Downstream transport tests should treat `blocked` capabilities as typed
|
|
32
|
+
blocked or unavailable results, not as missing fixture bugs.
|
|
33
|
+
- The `v0_4_harness_catalog_and_read_state` scenario covers the official
|
|
34
|
+
read-only harness catalog, read-state metadata, `active_response_id`, and
|
|
35
|
+
representative v0.4 event parsing.
|
|
36
|
+
- The `v0-5-noop-events.json` fixture separately proves the two new release
|
|
37
|
+
events remain known metadata-only no-ops; the historical v0.4 scenario stays
|
|
38
|
+
unchanged.
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "omnigent.fake_server_scenarios.v1",
|
|
3
|
+
"redaction": "metadata_only",
|
|
4
|
+
"captured_at": "2026-07-05T01:00:26Z",
|
|
5
|
+
"scenarios": [
|
|
6
|
+
{
|
|
7
|
+
"name": "create_send_stream_success",
|
|
8
|
+
"capabilities": [
|
|
9
|
+
"create_session",
|
|
10
|
+
"send_turn",
|
|
11
|
+
"stream_events"
|
|
12
|
+
],
|
|
13
|
+
"fixtures": [
|
|
14
|
+
"fixtures/omnigent/events/normal-terminal.json"
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"name": "interrupt_cancel",
|
|
19
|
+
"capabilities": [
|
|
20
|
+
"cancel_turn"
|
|
21
|
+
],
|
|
22
|
+
"fixtures": [
|
|
23
|
+
"fixtures/omnigent/events/cancel-interrupt.json"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "reconnect_snapshot_dedupe",
|
|
28
|
+
"capabilities": [
|
|
29
|
+
"reconnect",
|
|
30
|
+
"read_history",
|
|
31
|
+
"stream_events"
|
|
32
|
+
],
|
|
33
|
+
"fixtures": [
|
|
34
|
+
"fixtures/omnigent/events/reconnect-snapshot-dedupe.json"
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"name": "history_snapshot_and_items",
|
|
39
|
+
"capabilities": [
|
|
40
|
+
"read_history"
|
|
41
|
+
],
|
|
42
|
+
"fixtures": [
|
|
43
|
+
"fixtures/omnigent/discovery/http-surface.json"
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"name": "logical_close_requires_provider_emulation",
|
|
48
|
+
"capabilities": [
|
|
49
|
+
"close_session"
|
|
50
|
+
],
|
|
51
|
+
"fixtures": [
|
|
52
|
+
"fixtures/omnigent/errors/close-session-gap.json"
|
|
53
|
+
]
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
"name": "child_session_blocked",
|
|
57
|
+
"capabilities": [
|
|
58
|
+
"child_session"
|
|
59
|
+
],
|
|
60
|
+
"fixtures": [
|
|
61
|
+
"fixtures/omnigent/errors/child-session-blocked.json"
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"name": "harness_override_blocked",
|
|
66
|
+
"capabilities": [
|
|
67
|
+
"harness_override"
|
|
68
|
+
],
|
|
69
|
+
"fixtures": [
|
|
70
|
+
"fixtures/omnigent/errors/harness-override-blocked.json"
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"name": "malformed_sse_skip",
|
|
75
|
+
"capabilities": [
|
|
76
|
+
"malformed_event"
|
|
77
|
+
],
|
|
78
|
+
"fixtures": [
|
|
79
|
+
"fixtures/omnigent/events/malformed-sse-skip.json",
|
|
80
|
+
"fixtures/omnigent/errors/invalid-event-400.json"
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"name": "terminal_marker_deduplication",
|
|
85
|
+
"capabilities": [
|
|
86
|
+
"terminal_event_uniqueness"
|
|
87
|
+
],
|
|
88
|
+
"fixtures": [
|
|
89
|
+
"fixtures/omnigent/events/dual-terminal-markers.json"
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"name": "v0_4_harness_catalog_and_read_state",
|
|
94
|
+
"capabilities": [
|
|
95
|
+
"harness_catalog",
|
|
96
|
+
"reconnect",
|
|
97
|
+
"stream_events"
|
|
98
|
+
],
|
|
99
|
+
"fixtures": [
|
|
100
|
+
"fixtures/omnigent/discovery/http-surface.json",
|
|
101
|
+
"fixtures/omnigent/events/v0-4-noop-events.json"
|
|
102
|
+
]
|
|
103
|
+
}
|
|
104
|
+
],
|
|
105
|
+
"provenance": [
|
|
106
|
+
{
|
|
107
|
+
"kind": "phase_contract",
|
|
108
|
+
"path": "docs/omnigent-contract.md",
|
|
109
|
+
"gate": "IF-0-CONTRACT-1"
|
|
110
|
+
}
|
|
111
|
+
]
|
|
112
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { RuntimeEvent, SessionHistory } from "@consiliency/runtime-provider";
|
|
2
|
+
import { type OmnigentEventMapperOptions } from "./event-mapper.js";
|
|
3
|
+
import type { OmnigentHistoryItem } from "./types.js";
|
|
4
|
+
export interface MappedOmnigentHistory {
|
|
5
|
+
readonly history: SessionHistory;
|
|
6
|
+
readonly runtimeEvents: RuntimeEvent[];
|
|
7
|
+
readonly seenItemIds: Set<string>;
|
|
8
|
+
}
|
|
9
|
+
export interface OmnigentHistoryMapperOptions extends OmnigentEventMapperOptions {
|
|
10
|
+
readonly afterSequence?: number;
|
|
11
|
+
}
|
|
12
|
+
export declare function mapOmnigentHistory(sessionId: string, items: readonly OmnigentHistoryItem[], options?: OmnigentHistoryMapperOptions): MappedOmnigentHistory;
|
|
13
|
+
//# sourceMappingURL=history-mapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-mapper.d.ts","sourceRoot":"","sources":["../src/history-mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAElF,OAAO,EAAuB,KAAK,0BAA0B,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,YAAY,EAAE,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,4BAA6B,SAAQ,0BAA0B;IAC9E,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,OAAO,GAAE,4BAAiC,GACzC,qBAAqB,CAkBvB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { OmnigentEventMapper } from "./event-mapper.js";
|
|
2
|
+
export function mapOmnigentHistory(sessionId, items, options = {}) {
|
|
3
|
+
const afterSequence = options.afterSequence;
|
|
4
|
+
const mapper = new OmnigentEventMapper(sessionId, options);
|
|
5
|
+
const runtimeEvents = items.flatMap((item) => mapper.map(item.event));
|
|
6
|
+
const filteredEvents = afterSequence === undefined
|
|
7
|
+
? runtimeEvents
|
|
8
|
+
: runtimeEvents.filter((event) => event.sequence > afterSequence);
|
|
9
|
+
return {
|
|
10
|
+
history: {
|
|
11
|
+
events: filteredEvents,
|
|
12
|
+
nextCursor: filteredEvents.at(-1)?.sequence ?? afterSequence ?? 0,
|
|
13
|
+
sessionId,
|
|
14
|
+
},
|
|
15
|
+
runtimeEvents,
|
|
16
|
+
seenItemIds: new Set(mapper.seenItemIds),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=history-mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"history-mapper.js","sourceRoot":"","sources":["../src/history-mapper.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAmC,MAAM,mBAAmB,CAAC;AAazF,MAAM,UAAU,kBAAkB,CAChC,SAAiB,EACjB,KAAqC,EACrC,UAAwC,EAAE;IAE1C,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC5C,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3D,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,MAAM,cAAc,GAClB,aAAa,KAAK,SAAS;QACzB,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,aAAa,CAAC,CAAC;IAEtE,OAAO;QACL,OAAO,EAAE;YACP,MAAM,EAAE,cAAc;YACtB,UAAU,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,aAAa,IAAI,CAAC;YACjE,SAAS;SACV;QACD,aAAa;QACb,WAAW,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;KACzC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { CreateSessionRequest, SendTurnRequest } from "@consiliency/runtime-provider";
|
|
2
|
+
import { type OmnigentSseSkip } from "./sse-stream.js";
|
|
3
|
+
import type { OmnigentEventAck, OmnigentHarnessCatalogResponse, OmnigentHistoryItem, OmnigentHttpClientOptions, OmnigentRawEvent, OmnigentReadStateInput, OmnigentSendEventInput, OmnigentSessionSnapshot } from "./types.js";
|
|
4
|
+
export declare class OmnigentHttpError extends Error {
|
|
5
|
+
readonly body: unknown;
|
|
6
|
+
readonly headers: Record<string, string>;
|
|
7
|
+
readonly method: string;
|
|
8
|
+
readonly path: string;
|
|
9
|
+
readonly statusCode: number;
|
|
10
|
+
constructor(args: {
|
|
11
|
+
body: unknown;
|
|
12
|
+
headers: Record<string, string>;
|
|
13
|
+
method: string;
|
|
14
|
+
path: string;
|
|
15
|
+
statusCode: number;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export declare class OmnigentHttpClient {
|
|
19
|
+
private readonly options;
|
|
20
|
+
private readonly fetchImpl;
|
|
21
|
+
private readonly headers;
|
|
22
|
+
constructor(options: OmnigentHttpClientOptions);
|
|
23
|
+
createSession(request: CreateSessionRequest): Promise<OmnigentSessionSnapshot>;
|
|
24
|
+
listSessions(): Promise<OmnigentSessionSnapshot[]>;
|
|
25
|
+
listHarnesses(): Promise<OmnigentHarnessCatalogResponse>;
|
|
26
|
+
getSession(sessionId: string): Promise<OmnigentSessionSnapshot>;
|
|
27
|
+
patchSession(sessionId: string, changes: Record<string, unknown>): Promise<OmnigentSessionSnapshot>;
|
|
28
|
+
deleteSession(sessionId: string): Promise<void>;
|
|
29
|
+
getHistory(sessionId: string): Promise<OmnigentHistoryItem[]>;
|
|
30
|
+
listChildSessions(sessionId: string): Promise<OmnigentSessionSnapshot[]>;
|
|
31
|
+
setReadState(sessionId: string, readState: OmnigentReadStateInput): Promise<void>;
|
|
32
|
+
sendTurn(request: SendTurnRequest): Promise<OmnigentEventAck>;
|
|
33
|
+
sendEvent(sessionId: string, event: OmnigentSendEventInput): Promise<OmnigentEventAck>;
|
|
34
|
+
streamSession(sessionId: string, onSkip?: (skip: OmnigentSseSkip) => void): AsyncIterable<OmnigentRawEvent>;
|
|
35
|
+
private requestJson;
|
|
36
|
+
private toHttpError;
|
|
37
|
+
private url;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=http-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAE3F,OAAO,EAA0B,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EACV,gBAAgB,EAChB,8BAA8B,EAC9B,mBAAmB,EACnB,yBAAyB,EACzB,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAEpB,qBAAa,iBAAkB,SAAQ,KAAK;IAC1C,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,IAAI,EAAE;QAChB,IAAI,EAAE,OAAO,CAAC;QACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;KACpB;CASF;AAED,qBAAa,kBAAkB;IAIjB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyB;gBAEpB,OAAO,EAAE,yBAAyB;IAKzD,aAAa,CACjB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,uBAAuB,CAAC;IAc7B,YAAY,IAAI,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAIlD,aAAa,IAAI,OAAO,CAAC,8BAA8B,CAAC;IAIxD,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAI/D,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,OAAO,CAAC,uBAAuB,CAAC;IAQ7B,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAO/C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAO7D,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAOxE,YAAY,CAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,sBAAsB,GAChC,OAAO,CAAC,IAAI,CAAC;IAWV,QAAQ,CACZ,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,gBAAgB,CAAC;IAStB,SAAS,CACb,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,gBAAgB,CAAC;IAQrB,aAAa,CAClB,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,GACvC,aAAa,CAAC,gBAAgB,CAAC;YAoBpB,WAAW;YAyBX,WAAW;IAqBzB,OAAO,CAAC,GAAG;CAGZ"}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
import { parseOmnigentSseStream } from "./sse-stream.js";
|
|
2
|
+
export class OmnigentHttpError extends Error {
|
|
3
|
+
body;
|
|
4
|
+
headers;
|
|
5
|
+
method;
|
|
6
|
+
path;
|
|
7
|
+
statusCode;
|
|
8
|
+
constructor(args) {
|
|
9
|
+
super(`${args.method} ${args.path} failed with ${args.statusCode}`);
|
|
10
|
+
this.name = "OmnigentHttpError";
|
|
11
|
+
this.body = args.body;
|
|
12
|
+
this.headers = args.headers;
|
|
13
|
+
this.method = args.method;
|
|
14
|
+
this.path = args.path;
|
|
15
|
+
this.statusCode = args.statusCode;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export class OmnigentHttpClient {
|
|
19
|
+
options;
|
|
20
|
+
fetchImpl;
|
|
21
|
+
headers;
|
|
22
|
+
constructor(options) {
|
|
23
|
+
this.options = options;
|
|
24
|
+
this.fetchImpl = options.fetch ?? globalThis.fetch;
|
|
25
|
+
this.headers = options.headers ?? {};
|
|
26
|
+
}
|
|
27
|
+
async createSession(request) {
|
|
28
|
+
return this.requestJson("POST", "/v1/sessions", {
|
|
29
|
+
agentSpec: request.agentSpec,
|
|
30
|
+
correlationId: request.correlationId,
|
|
31
|
+
idempotencyKey: request.idempotencyKey,
|
|
32
|
+
identityProfileId: request.identityProfileId,
|
|
33
|
+
initialMessage: request.initialMessage,
|
|
34
|
+
repoRoot: request.repoRoot,
|
|
35
|
+
targetHarness: request.targetHarness,
|
|
36
|
+
targetProvider: request.targetProvider,
|
|
37
|
+
title: request.title,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
async listSessions() {
|
|
41
|
+
return this.requestJson("GET", "/v1/sessions");
|
|
42
|
+
}
|
|
43
|
+
async listHarnesses() {
|
|
44
|
+
return this.requestJson("GET", "/v1/harnesses");
|
|
45
|
+
}
|
|
46
|
+
async getSession(sessionId) {
|
|
47
|
+
return this.requestJson("GET", `/v1/sessions/${encodeURIComponent(sessionId)}`);
|
|
48
|
+
}
|
|
49
|
+
async patchSession(sessionId, changes) {
|
|
50
|
+
return this.requestJson("PATCH", `/v1/sessions/${encodeURIComponent(sessionId)}`, changes);
|
|
51
|
+
}
|
|
52
|
+
async deleteSession(sessionId) {
|
|
53
|
+
await this.requestJson("DELETE", `/v1/sessions/${encodeURIComponent(sessionId)}`);
|
|
54
|
+
}
|
|
55
|
+
async getHistory(sessionId) {
|
|
56
|
+
return this.requestJson("GET", `/v1/sessions/${encodeURIComponent(sessionId)}/items`);
|
|
57
|
+
}
|
|
58
|
+
async listChildSessions(sessionId) {
|
|
59
|
+
return this.requestJson("GET", `/v1/sessions/${encodeURIComponent(sessionId)}/child_sessions`);
|
|
60
|
+
}
|
|
61
|
+
async setReadState(sessionId, readState) {
|
|
62
|
+
await this.requestJson("PUT", `/v1/sessions/${encodeURIComponent(sessionId)}/read-state`, {
|
|
63
|
+
last_seen: readState.lastSeen,
|
|
64
|
+
unread: readState.unread,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
async sendTurn(request) {
|
|
68
|
+
return this.sendEvent(request.sessionId, {
|
|
69
|
+
data: {
|
|
70
|
+
message: request.message,
|
|
71
|
+
},
|
|
72
|
+
type: "message",
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
async sendEvent(sessionId, event) {
|
|
76
|
+
return this.requestJson("POST", `/v1/sessions/${encodeURIComponent(sessionId)}/events`, event);
|
|
77
|
+
}
|
|
78
|
+
async *streamSession(sessionId, onSkip) {
|
|
79
|
+
const response = await this.fetchImpl(this.url(`/v1/sessions/${encodeURIComponent(sessionId)}/stream`), {
|
|
80
|
+
headers: this.headers,
|
|
81
|
+
method: "GET",
|
|
82
|
+
});
|
|
83
|
+
if (!response.ok) {
|
|
84
|
+
throw await this.toHttpError(response, "GET", `/v1/sessions/${sessionId}/stream`);
|
|
85
|
+
}
|
|
86
|
+
if (!response.body) {
|
|
87
|
+
throw new Error("Omnigent stream response did not include a body.");
|
|
88
|
+
}
|
|
89
|
+
yield* parseOmnigentSseStream(response.body, onSkip);
|
|
90
|
+
}
|
|
91
|
+
async requestJson(method, path, body) {
|
|
92
|
+
const response = await this.fetchImpl(this.url(path), {
|
|
93
|
+
body: body === undefined ? undefined : JSON.stringify(body),
|
|
94
|
+
headers: {
|
|
95
|
+
...this.headers,
|
|
96
|
+
...(body === undefined ? {} : { "content-type": "application/json" }),
|
|
97
|
+
},
|
|
98
|
+
method,
|
|
99
|
+
});
|
|
100
|
+
if (!response.ok) {
|
|
101
|
+
throw await this.toHttpError(response, method, path);
|
|
102
|
+
}
|
|
103
|
+
if (response.status === 204) {
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
return (await response.json());
|
|
107
|
+
}
|
|
108
|
+
async toHttpError(response, method, path) {
|
|
109
|
+
let body;
|
|
110
|
+
try {
|
|
111
|
+
body = await response.json();
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
body = await response.text();
|
|
115
|
+
}
|
|
116
|
+
return new OmnigentHttpError({
|
|
117
|
+
body,
|
|
118
|
+
headers: Object.fromEntries(response.headers.entries()),
|
|
119
|
+
method,
|
|
120
|
+
path,
|
|
121
|
+
statusCode: response.status,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
url(path) {
|
|
125
|
+
return new URL(path, this.options.baseUrl).toString();
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
//# sourceMappingURL=http-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type AgentRuntimeProvider, type AgentSession, type AgentSessionInfo, type CancellationReason, type CreateSessionRequest, type HistoryOptions, type ProviderHealth, type RuntimeEvent, type SendTurnRequest, type SessionHistory, type StreamOptions, type TurnHandle } from "@consiliency/runtime-provider";
|
|
2
|
+
import type { OmnigentHttpClientOptions } from "./types.js";
|
|
3
|
+
export declare class OmnigentHttpProvider implements AgentRuntimeProvider {
|
|
4
|
+
private readonly client;
|
|
5
|
+
private readonly sessions;
|
|
6
|
+
private readonly turns;
|
|
7
|
+
constructor(options: OmnigentHttpClientOptions);
|
|
8
|
+
createSession(request: CreateSessionRequest): Promise<AgentSession>;
|
|
9
|
+
sendTurn(request: SendTurnRequest): Promise<TurnHandle>;
|
|
10
|
+
readHistory(sessionId: string, options?: HistoryOptions): Promise<SessionHistory>;
|
|
11
|
+
streamEvents(sessionId: string, options?: StreamOptions): AsyncIterable<RuntimeEvent>;
|
|
12
|
+
cancelTurn(handle: TurnHandle, reason?: CancellationReason): Promise<TurnHandle>;
|
|
13
|
+
closeSession(sessionId: string): Promise<void>;
|
|
14
|
+
getSessionInfo(sessionId: string): Promise<AgentSessionInfo>;
|
|
15
|
+
health(): Promise<ProviderHealth>;
|
|
16
|
+
}
|
|
17
|
+
export declare function createHttpProvider(options: OmnigentHttpClientOptions): AgentRuntimeProvider;
|
|
18
|
+
//# sourceMappingURL=http-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-provider.d.ts","sourceRoot":"","sources":["../src/http-provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EAErB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,UAAU,EAChB,MAAM,+BAA+B,CAAC;AAKvC,OAAO,KAAK,EACV,yBAAyB,EAE1B,MAAM,YAAY,CAAC;AA6DpB,qBAAa,oBAAqB,YAAW,oBAAoB;IAC/D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuC;IAChE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiC;gBAE3C,OAAO,EAAE,yBAAyB;IAIxC,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,YAAY,CAAC;IAOnE,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IA0BvD,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,cAAc,CAAC;IAgBnB,YAAY,CACjB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,aAAa,GACtB,aAAa,CAAC,YAAY,CAAC;IA0BxB,UAAU,CACd,MAAM,EAAE,UAAU,EAClB,MAAM,GAAE,kBAAmC,GAC1C,OAAO,CAAC,UAAU,CAAC;IAuBhB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB9C,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA0B5D,MAAM,IAAI,OAAO,CAAC,cAAc,CAAC;CAexC;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,yBAAyB,GACjC,oBAAoB,CAEtB"}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { createRuntimeFailure, } from "@consiliency/runtime-provider";
|
|
2
|
+
import { OmnigentEventMapper } from "./event-mapper.js";
|
|
3
|
+
import { mapOmnigentHistory } from "./history-mapper.js";
|
|
4
|
+
import { OmnigentHttpClient } from "./http-client.js";
|
|
5
|
+
function mapSessionState(status) {
|
|
6
|
+
switch (status) {
|
|
7
|
+
case "launching":
|
|
8
|
+
return "starting";
|
|
9
|
+
case "running":
|
|
10
|
+
case "waiting":
|
|
11
|
+
return "turn_active";
|
|
12
|
+
case "failed":
|
|
13
|
+
return "failed";
|
|
14
|
+
case "idle":
|
|
15
|
+
default:
|
|
16
|
+
return "idle";
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function toSessionInfo(request, snapshot, previous) {
|
|
20
|
+
return {
|
|
21
|
+
activeTurnId: snapshot.activeTurnId ??
|
|
22
|
+
snapshot.activeResponseId ??
|
|
23
|
+
snapshot.active_response_id ??
|
|
24
|
+
undefined,
|
|
25
|
+
correlationId: request.correlationId,
|
|
26
|
+
createdAt: snapshot.createdAt,
|
|
27
|
+
eventCursor: previous?.eventCursor ?? 0,
|
|
28
|
+
handoffPacket: request.handoffPacket,
|
|
29
|
+
id: snapshot.id,
|
|
30
|
+
identityProfileId: request.identityProfileId,
|
|
31
|
+
lastError: previous?.lastError,
|
|
32
|
+
metadata: snapshot.mcp_startup == null
|
|
33
|
+
? snapshot.metadata
|
|
34
|
+
: { ...snapshot.metadata, mcp_startup: snapshot.mcp_startup },
|
|
35
|
+
repoRoot: request.repoRoot,
|
|
36
|
+
rootSessionId: snapshot.id,
|
|
37
|
+
runtime: "omnigent",
|
|
38
|
+
state: mapSessionState(snapshot.status),
|
|
39
|
+
targetHarness: request.targetHarness,
|
|
40
|
+
targetProvider: request.targetProvider,
|
|
41
|
+
title: snapshot.title,
|
|
42
|
+
updatedAt: snapshot.updatedAt,
|
|
43
|
+
worktree: request.worktree,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export class OmnigentHttpProvider {
|
|
47
|
+
client;
|
|
48
|
+
sessions = new Map();
|
|
49
|
+
turns = new Map();
|
|
50
|
+
constructor(options) {
|
|
51
|
+
this.client = new OmnigentHttpClient(options);
|
|
52
|
+
}
|
|
53
|
+
async createSession(request) {
|
|
54
|
+
const snapshot = await this.client.createSession(request);
|
|
55
|
+
const session = toSessionInfo(request, snapshot);
|
|
56
|
+
this.sessions.set(session.id, session);
|
|
57
|
+
return session;
|
|
58
|
+
}
|
|
59
|
+
async sendTurn(request) {
|
|
60
|
+
const ack = await this.client.sendTurn(request);
|
|
61
|
+
const now = new Date().toISOString();
|
|
62
|
+
const handle = {
|
|
63
|
+
createdAt: now,
|
|
64
|
+
idempotencyKey: request.idempotencyKey,
|
|
65
|
+
sessionId: request.sessionId,
|
|
66
|
+
state: ack.queued ? "queued" : "running",
|
|
67
|
+
turnId: ack.turnId,
|
|
68
|
+
updatedAt: now,
|
|
69
|
+
};
|
|
70
|
+
this.turns.set(`${handle.sessionId}:${handle.turnId}`, handle);
|
|
71
|
+
const session = this.sessions.get(request.sessionId);
|
|
72
|
+
if (session) {
|
|
73
|
+
this.sessions.set(request.sessionId, {
|
|
74
|
+
...session,
|
|
75
|
+
activeTurnId: ack.turnId,
|
|
76
|
+
state: "turn_active",
|
|
77
|
+
updatedAt: now,
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
return handle;
|
|
81
|
+
}
|
|
82
|
+
async readHistory(sessionId, options) {
|
|
83
|
+
const items = await this.client.getHistory(sessionId);
|
|
84
|
+
const mapped = mapOmnigentHistory(sessionId, items, {
|
|
85
|
+
afterSequence: options?.afterSequence,
|
|
86
|
+
});
|
|
87
|
+
return {
|
|
88
|
+
events: options?.limit === undefined
|
|
89
|
+
? mapped.history.events
|
|
90
|
+
: mapped.history.events.slice(0, options.limit),
|
|
91
|
+
nextCursor: mapped.history.nextCursor,
|
|
92
|
+
sessionId,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
async *streamEvents(sessionId, options) {
|
|
96
|
+
const stream = this.client.streamSession(sessionId);
|
|
97
|
+
const snapshot = await this.client.getSession(sessionId);
|
|
98
|
+
const mappedSnapshot = mapOmnigentHistory(sessionId, snapshot.items, {
|
|
99
|
+
afterSequence: options?.afterSequence,
|
|
100
|
+
});
|
|
101
|
+
for (const event of mappedSnapshot.history.events) {
|
|
102
|
+
yield event;
|
|
103
|
+
}
|
|
104
|
+
const startingSequence = (mappedSnapshot.runtimeEvents.at(-1)?.sequence ?? options?.afterSequence ?? 0) +
|
|
105
|
+
1;
|
|
106
|
+
const mapper = new OmnigentEventMapper(sessionId, {
|
|
107
|
+
seenItemIds: mappedSnapshot.seenItemIds,
|
|
108
|
+
startingSequence,
|
|
109
|
+
});
|
|
110
|
+
for await (const rawEvent of stream) {
|
|
111
|
+
for (const event of mapper.map(rawEvent)) {
|
|
112
|
+
yield event;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
async cancelTurn(handle, reason = "user_request") {
|
|
117
|
+
await this.client.sendEvent(handle.sessionId, {
|
|
118
|
+
data: { reason },
|
|
119
|
+
type: "interrupt",
|
|
120
|
+
});
|
|
121
|
+
const cancelled = {
|
|
122
|
+
...handle,
|
|
123
|
+
state: "cancelled",
|
|
124
|
+
updatedAt: new Date().toISOString(),
|
|
125
|
+
};
|
|
126
|
+
this.turns.set(`${handle.sessionId}:${handle.turnId}`, cancelled);
|
|
127
|
+
const session = this.sessions.get(handle.sessionId);
|
|
128
|
+
if (session) {
|
|
129
|
+
this.sessions.set(handle.sessionId, {
|
|
130
|
+
...session,
|
|
131
|
+
activeTurnId: undefined,
|
|
132
|
+
state: "idle",
|
|
133
|
+
updatedAt: cancelled.updatedAt,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
return cancelled;
|
|
137
|
+
}
|
|
138
|
+
async closeSession(sessionId) {
|
|
139
|
+
await this.client.sendEvent(sessionId, {
|
|
140
|
+
data: {},
|
|
141
|
+
type: "stop_session",
|
|
142
|
+
});
|
|
143
|
+
const session = this.sessions.get(sessionId);
|
|
144
|
+
if (session) {
|
|
145
|
+
this.sessions.set(sessionId, {
|
|
146
|
+
...session,
|
|
147
|
+
activeTurnId: undefined,
|
|
148
|
+
state: "closed",
|
|
149
|
+
updatedAt: new Date().toISOString(),
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
async getSessionInfo(sessionId) {
|
|
154
|
+
const snapshot = await this.client.getSession(sessionId);
|
|
155
|
+
const existing = this.sessions.get(sessionId);
|
|
156
|
+
if (!existing) {
|
|
157
|
+
throw createRuntimeFailure({
|
|
158
|
+
actor: "provider",
|
|
159
|
+
category: "validation",
|
|
160
|
+
message: `Session ${sessionId} is not tracked locally.`,
|
|
161
|
+
retryable: false,
|
|
162
|
+
scope: "session",
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
const next = toSessionInfo(existing, snapshot, existing);
|
|
166
|
+
const resolved = existing.state === "closed"
|
|
167
|
+
? {
|
|
168
|
+
...next,
|
|
169
|
+
activeTurnId: undefined,
|
|
170
|
+
state: "closed",
|
|
171
|
+
}
|
|
172
|
+
: next;
|
|
173
|
+
this.sessions.set(sessionId, resolved);
|
|
174
|
+
return resolved;
|
|
175
|
+
}
|
|
176
|
+
async health() {
|
|
177
|
+
const sessions = await this.client.listSessions();
|
|
178
|
+
return {
|
|
179
|
+
activeSessions: sessions.filter((session) => session.status !== "idle").length,
|
|
180
|
+
available: true,
|
|
181
|
+
backend: "omnigent-http",
|
|
182
|
+
notes: [
|
|
183
|
+
"logical close remains provider-emulated",
|
|
184
|
+
"child-session creation stays blocked on the public transport surface",
|
|
185
|
+
"public harness override stays blocked",
|
|
186
|
+
],
|
|
187
|
+
runtime: "omnigent",
|
|
188
|
+
sessionStateDrift: [],
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
export function createHttpProvider(options) {
|
|
193
|
+
return new OmnigentHttpProvider(options);
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=http-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-provider.js","sourceRoot":"","sources":["../src/http-provider.ts"],"names":[],"mappings":"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"}
|