@op0ai/sdk 0.3.0 → 0.4.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.
Files changed (83) hide show
  1. package/LICENSE +38 -38
  2. package/dist/guards.d.ts +1 -61
  3. package/dist/guards.js +1 -88
  4. package/dist/hash.d.ts +1 -6
  5. package/dist/hash.js +1 -18
  6. package/dist/index.d.ts +1 -121
  7. package/dist/index.js +14 -171
  8. package/dist/session.d.ts +1 -47
  9. package/dist/session.js +2 -88
  10. package/dist/{agent.d.ts → types/agent.d.ts} +1 -2
  11. package/dist/{agui.d.ts → types/agui.d.ts} +0 -1
  12. package/dist/{config.d.ts → types/config.d.ts} +0 -1
  13. package/dist/{contract.d.ts → types/contract.d.ts} +0 -1
  14. package/dist/{data.d.ts → types/data.d.ts} +0 -1
  15. package/dist/{define.d.ts → types/define.d.ts} +0 -1
  16. package/dist/{distill.d.ts → types/distill.d.ts} +0 -1
  17. package/dist/{events.d.ts → types/events.d.ts} +0 -1
  18. package/dist/{evlog.d.ts → types/evlog.d.ts} +0 -1
  19. package/dist/types/guards.d.ts +60 -0
  20. package/dist/types/hash.d.ts +5 -0
  21. package/dist/types/index.d.ts +120 -0
  22. package/dist/{platform.d.ts → types/platform.d.ts} +0 -1
  23. package/dist/types/session.d.ts +46 -0
  24. package/dist/{source.d.ts → types/source.d.ts} +0 -1
  25. package/dist/{tool.d.ts → types/tool.d.ts} +0 -1
  26. package/dist/{usectx.d.ts → types/usectx.d.ts} +0 -1
  27. package/dist/types/vault.d.ts +20 -0
  28. package/dist/vault.d.ts +1 -21
  29. package/dist/vault.js +1 -25
  30. package/package.json +4 -3
  31. package/dist/agent.d.ts.map +0 -1
  32. package/dist/agent.js +0 -72
  33. package/dist/agent.js.map +0 -1
  34. package/dist/agui.d.ts.map +0 -1
  35. package/dist/agui.js +0 -22
  36. package/dist/agui.js.map +0 -1
  37. package/dist/config.d.ts.map +0 -1
  38. package/dist/config.js +0 -39
  39. package/dist/config.js.map +0 -1
  40. package/dist/contract.d.ts.map +0 -1
  41. package/dist/contract.js +0 -66
  42. package/dist/contract.js.map +0 -1
  43. package/dist/data.d.ts.map +0 -1
  44. package/dist/data.js +0 -211
  45. package/dist/data.js.map +0 -1
  46. package/dist/define.d.ts.map +0 -1
  47. package/dist/define.js +0 -87
  48. package/dist/define.js.map +0 -1
  49. package/dist/distill.d.ts.map +0 -1
  50. package/dist/distill.js +0 -113
  51. package/dist/distill.js.map +0 -1
  52. package/dist/events.d.ts.map +0 -1
  53. package/dist/events.js +0 -25
  54. package/dist/events.js.map +0 -1
  55. package/dist/evlog.d.ts.map +0 -1
  56. package/dist/evlog.js +0 -124
  57. package/dist/evlog.js.map +0 -1
  58. package/dist/fleet-names.d.ts +0 -11
  59. package/dist/fleet-names.d.ts.map +0 -1
  60. package/dist/fleet-names.js +0 -10
  61. package/dist/fleet-names.js.map +0 -1
  62. package/dist/guards.d.ts.map +0 -1
  63. package/dist/guards.js.map +0 -1
  64. package/dist/hash.d.ts.map +0 -1
  65. package/dist/hash.js.map +0 -1
  66. package/dist/index.d.ts.map +0 -1
  67. package/dist/index.js.map +0 -1
  68. package/dist/platform.d.ts.map +0 -1
  69. package/dist/platform.js +0 -10
  70. package/dist/platform.js.map +0 -1
  71. package/dist/session.d.ts.map +0 -1
  72. package/dist/session.js.map +0 -1
  73. package/dist/source.d.ts.map +0 -1
  74. package/dist/source.js +0 -96
  75. package/dist/source.js.map +0 -1
  76. package/dist/tool.d.ts.map +0 -1
  77. package/dist/tool.js +0 -16
  78. package/dist/tool.js.map +0 -1
  79. package/dist/usectx.d.ts.map +0 -1
  80. package/dist/usectx.js +0 -220
  81. package/dist/usectx.js.map +0 -1
  82. package/dist/vault.d.ts.map +0 -1
  83. package/dist/vault.js.map +0 -1
@@ -0,0 +1,120 @@
1
+ export * from "./hash.ts";
2
+ export * from "./vault.ts";
3
+ export * from "./guards.ts";
4
+ export * from "./platform.ts";
5
+ export * from "./agent.ts";
6
+ export * from "./source.ts";
7
+ export * from "./agui.ts";
8
+ export * from "./tool.ts";
9
+ export * from "./config.ts";
10
+ export * from "./define.ts";
11
+ export * from "./contract.ts";
12
+ export * from "./evlog.ts";
13
+ export * from "./events.ts";
14
+ export * from "./usectx.ts";
15
+ export * from "./distill.ts";
16
+ export * from "./data.ts";
17
+ import type { Vault } from "./vault.ts";
18
+ import type { Resources, ResourceNeed } from "./platform.ts";
19
+ import { type Guard, type WideEvent, type AuditEntry } from "./guards.ts";
20
+ /** A sub-cord: an encapsulated unit composed into a parent. `any` generics (not `unknown`) so a typed
21
+ * `subcords` record — { scan: Subagent<string,Facts>, score: Subagent<Facts,EvalResult>, ... } — is assignable
22
+ * to Record<string, Subagent> (Subagent<X,Y> is NOT assignable to Subagent<unknown,unknown> — invariant `run`
23
+ * param — but IS assignable to Subagent<any,any>). Same heterogeneous-registry seam as data.ts's AnyFn. */
24
+ export type Subagent<I = any, O = any> = {
25
+ id: string;
26
+ mount: "local" | "registry";
27
+ run: (input: I) => Promise<O>;
28
+ };
29
+ /** Mount an OWNED sub-cord in-process (deterministic trunk). */
30
+ export declare function use<I, O>(sc: {
31
+ id: string;
32
+ run: (input: I) => Promise<O>;
33
+ }): Subagent<I, O>;
34
+ /** Mount a THIRD-PARTY/registry cord over MCP (the trust boundary; an executor toolkit). */
35
+ export declare function useRemote<I, O>(sc: {
36
+ id: string;
37
+ call: (input: I) => Promise<O>;
38
+ }): Subagent<I, O>;
39
+ export type Expose = {
40
+ codemode?: boolean;
41
+ mcp?: string;
42
+ cli?: boolean;
43
+ openapi?: boolean;
44
+ };
45
+ export type AgentDef<Input, Output> = {
46
+ id: string;
47
+ kind?: "agent-ful" | "agent-less";
48
+ inference?: "managed" | "byo";
49
+ /** The scope this cord's run requests — checked by deepsec against its allow-list (H4). */
50
+ scope?: string;
51
+ expose?: Expose;
52
+ guards?: Guard[];
53
+ subcords?: Record<string, Subagent>;
54
+ /** Durable resources this cord requires; the host MUST bind them or the run fails fast (validated post-gate). */
55
+ needs?: ResourceNeed[];
56
+ /** The deterministic trunk: compose sub-cords (ctx) + use the host-bound resources (res). */
57
+ run: (input: Input, ctx: Record<string, (input: any) => Promise<any>>, res: Resources) => Promise<Output>;
58
+ };
59
+ export type RunBudget = {
60
+ cap: number;
61
+ used: number;
62
+ depth: number;
63
+ maxDepth: number;
64
+ };
65
+ export type RunOpts = {
66
+ tenantId?: string;
67
+ scope?: string;
68
+ vault?: Vault;
69
+ resources?: Resources;
70
+ budget?: Partial<Pick<RunBudget, "cap" | "maxDepth">>;
71
+ onEvent?: (e: WideEvent) => void;
72
+ };
73
+ export type RunResult<O> = {
74
+ output: O;
75
+ runId: string;
76
+ artifact?: {
77
+ key: string;
78
+ version: string;
79
+ hash: string;
80
+ };
81
+ audit: AuditEntry[];
82
+ events: WideEvent[];
83
+ budget: RunBudget;
84
+ };
85
+ export type AgentManifest = {
86
+ id: string;
87
+ version: string;
88
+ kind: "agent-ful" | "agent-less";
89
+ inference: "managed" | "byo";
90
+ scope?: string;
91
+ expose: Expose;
92
+ subcords: string[];
93
+ guards: string[];
94
+ needs: ResourceNeed[];
95
+ };
96
+ export type Agent<Input, Output> = {
97
+ id: string;
98
+ expose: Expose;
99
+ manifest: AgentManifest;
100
+ run: (input: Input, opts?: RunOpts) => Promise<Output>;
101
+ runFull: (input: Input, opts?: RunOpts) => Promise<RunResult<Output>>;
102
+ };
103
+ export declare function defineAgent<Input, Output>(def: AgentDef<Input, Output>): Agent<Input, Output>;
104
+ /** /.well-known/op0.json (ADR-18) generated from the cord's `expose`. Host is filled at deploy. */
105
+ export declare const wellKnown: (m: AgentManifest, host?: string) => {
106
+ auth?: {
107
+ type: string;
108
+ scopes: string[];
109
+ };
110
+ skills: string;
111
+ cli?: string;
112
+ openapi?: string;
113
+ mcp: string[];
114
+ docs: string;
115
+ };
116
+ /** Content-address the manifest for skillkit publish/fork lineage (signed → forkOf{atCommit} later, ADR-22). */
117
+ export declare const signManifest: (m: AgentManifest) => {
118
+ manifest: AgentManifest;
119
+ hash: string;
120
+ };
@@ -94,4 +94,3 @@ export interface RunSpec {
94
94
  /** Who checks the result: a verifier cord/tool name, or "none" (explicitly unverified). */
95
95
  verifier?: string;
96
96
  }
97
- //# sourceMappingURL=platform.d.ts.map
@@ -0,0 +1,46 @@
1
+ import { verifyChain, type WideEvent, type AuditEntry } from "./guards.ts";
2
+ export type SessionMode = "owned" | "attached" | "streamed";
3
+ export type CaptureVector = "hook" | "proxy" | "watcher" | "backfill";
4
+ /** A normalized coding-session event (mirrors lapdog/trajectory capture). */
5
+ export type SessionEvent = {
6
+ ts: string;
7
+ kind: "lifecycle" | "prompt" | "model" | "tool_call" | "tool_result" | "permission";
8
+ name: string;
9
+ vector: CaptureVector;
10
+ attrs?: Record<string, unknown>;
11
+ tokensIn?: number;
12
+ tokensOut?: number;
13
+ costUsd?: number;
14
+ };
15
+ export type SessionStream = {
16
+ mode: SessionMode;
17
+ harness: string;
18
+ runId: string;
19
+ events: SessionEvent[];
20
+ };
21
+ export type Decision = "allow" | "deny" | "approve";
22
+ export type Rule = {
23
+ id: string;
24
+ match: (e: SessionEvent) => boolean;
25
+ decision: Decision;
26
+ why: string;
27
+ };
28
+ export declare const DEFAULT_RULES: Rule[];
29
+ export type Interception = {
30
+ event: SessionEvent;
31
+ rule: Rule;
32
+ decision: Decision;
33
+ enforceable: boolean;
34
+ };
35
+ export declare const intercept: (stream: SessionStream, rules?: Rule[]) => Interception[];
36
+ export type SessionTrace = {
37
+ runId: string;
38
+ harness: string;
39
+ mode: SessionMode;
40
+ events: WideEvent[];
41
+ audit: AuditEntry[];
42
+ interceptions: Interception[];
43
+ };
44
+ export declare const ingestSession: (stream: SessionStream, rules?: Rule[]) => SessionTrace;
45
+ export declare const fromTrajectoryJsonl: (jsonl: string, harness: string, mode?: SessionMode) => SessionStream;
46
+ export { verifyChain };
@@ -62,4 +62,3 @@ export declare function githubCommitter(config: {
62
62
  base?: string;
63
63
  fetch?: typeof fetch;
64
64
  }): Committer;
65
- //# sourceMappingURL=source.d.ts.map
@@ -40,4 +40,3 @@ export interface ToolManifestEntry {
40
40
  readonly description: string;
41
41
  }
42
42
  export declare function toolManifest<Env>(tools: ToolSet<Env>): ToolManifestEntry[];
43
- //# sourceMappingURL=tool.d.ts.map
@@ -90,4 +90,3 @@ export interface UsectxConfig {
90
90
  * resulting FileSet with in-band redaction + audit. This is the one acquisition primitive a cord uses.
91
91
  */
92
92
  export declare function usectx(config?: UsectxConfig): Acquire;
93
- //# sourceMappingURL=usectx.d.ts.map
@@ -0,0 +1,20 @@
1
+ export interface Vault {
2
+ /** Write a deliverable; returns its key + version + content hash (content-addressing → fork lineage). */
3
+ put(key: string, body: string, meta?: Record<string, unknown>): Promise<{
4
+ key: string;
5
+ version: string;
6
+ hash: string;
7
+ }>;
8
+ /** Read a deliverable back (latest version), or null. */
9
+ get(key: string): Promise<string | null>;
10
+ /** List keys under a prefix. */
11
+ list(prefix?: string): Promise<string[]>;
12
+ }
13
+ /** In-memory Vault — the verify/Node default and the H3 red-test substrate. Versions on repeated keys. */
14
+ export declare const memVault: () => Vault & {
15
+ store: Map<string, {
16
+ body: string;
17
+ version: number;
18
+ meta?: unknown;
19
+ }>;
20
+ };
package/dist/vault.d.ts CHANGED
@@ -1,21 +1 @@
1
- export interface Vault {
2
- /** Write a deliverable; returns its key + version + content hash (content-addressing → fork lineage). */
3
- put(key: string, body: string, meta?: Record<string, unknown>): Promise<{
4
- key: string;
5
- version: string;
6
- hash: string;
7
- }>;
8
- /** Read a deliverable back (latest version), or null. */
9
- get(key: string): Promise<string | null>;
10
- /** List keys under a prefix. */
11
- list(prefix?: string): Promise<string[]>;
12
- }
13
- /** In-memory Vault — the verify/Node default and the H3 red-test substrate. Versions on repeated keys. */
14
- export declare const memVault: () => Vault & {
15
- store: Map<string, {
16
- body: string;
17
- version: number;
18
- meta?: unknown;
19
- }>;
20
- };
21
- //# sourceMappingURL=vault.d.ts.map
1
+ export * from "./types/vault.js";
package/dist/vault.js CHANGED
@@ -1,25 +1 @@
1
- // vault.ts the Vault seam (ADR-8). A cord's deliverables are persisted as versioned artifacts; the cord
2
- // core depends ONLY on this interface, so the SAME run logic writes to an in-memory store (Node/verify), an
3
- // R2 bucket (the Worker — see worker/src/vault.ts), or Cloudflare Artifacts (the versioned git target,
4
- // deploy-time). H3 = "every assess leaves a versioned deliverable" — the runtime calls vault.put() once the
5
- // deepsec gate has redacted the output.
6
- import { hashHex } from "./hash.js";
7
- /** In-memory Vault — the verify/Node default and the H3 red-test substrate. Versions on repeated keys. */
8
- export const memVault = () => {
9
- const store = new Map();
10
- return {
11
- store,
12
- async put(key, body, meta) {
13
- const version = (store.get(key)?.version ?? 0) + 1;
14
- store.set(key, { body, version, meta });
15
- return { key, version: String(version), hash: hashHex(body) };
16
- },
17
- async get(key) {
18
- return store.get(key)?.body ?? null;
19
- },
20
- async list(prefix = "") {
21
- return [...store.keys()].filter((k) => k.startsWith(prefix));
22
- },
23
- };
24
- };
25
- //# sourceMappingURL=vault.js.map
1
+ var s=r=>{let t=2166136261;for(let n=0;n<r.length;n++)t^=r.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")};var a=()=>{let r=new Map;return{store:r,async put(t,n,i){let e=(r.get(t)?.version??0)+1;return r.set(t,{body:n,version:e,meta:i}),{key:t,version:String(e),hash:s(n)}},async get(t){return r.get(t)?.body??null},async list(t=""){return[...r.keys()].filter(n=>n.startsWith(t))}}};export{a as memVault};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@op0ai/sdk",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "type": "module",
5
5
  "description": "The op0 SDK — an agent with a computer: a governed function under a RunSpec (goal + stop rules + verifier), typed ports, a vendor-free core. Build agents that run on op0 (op0.ai), the governed runtime for agent work. Proprietary — free to use WITH the op0 runtime.",
6
6
  "license": "SEE LICENSE IN LICENSE",
@@ -36,14 +36,15 @@
36
36
  "zod": "^4.4.3"
37
37
  },
38
38
  "devDependencies": {
39
+ "esbuild": "^0.28.1",
39
40
  "vitest": "^4.1.9"
40
41
  },
41
42
  "scripts": {
42
43
  "test": "node scripts/dep-lint.mjs && vitest run",
43
44
  "typecheck": "tsgo --noEmit -p tsconfig.json",
44
45
  "build": "tsc -p tsconfig.build.json",
45
- "prepack": "node ../../scripts/publish-exports.mjs prepack",
46
- "postpack": "node ../../scripts/publish-exports.mjs postpack"
46
+ "prepack": "npm test && node scripts/build-dist.mjs prepack",
47
+ "postpack": "node scripts/build-dist.mjs postpack"
47
48
  },
48
49
  "keywords": [
49
50
  "op0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAW,SAAS,EAAE,MAAM,eAAe,CAAC;AAEhG;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,WAAW,SAAS,KAAG,OA8BpD,CAAC;AAEH;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,QAAQ,KAAK,CAAC;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAA;CAAE,CAAC,KAAG,SAGxF,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,KAAK,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,KAAG,QAAQ,EAoBrH,CAAC"}
package/dist/agent.js DELETED
@@ -1,72 +0,0 @@
1
- /**
2
- * minimalHarness — model → (tool calls)* → final text, bounded by maxSteps. The agent reasons freely but can
3
- * only ACT through the `tools` it's given (which are the cord's governed ports — see portsAsTools), so an
4
- * agent-ful cord stays inside its declared scope by construction, not by prompt.
5
- */
6
- export const minimalHarness = (inference) => ({
7
- async run({ instructions, input, tools, maxSteps = 8 }) {
8
- const messages = [
9
- { role: "system", content: instructions },
10
- { role: "user", content: input },
11
- ];
12
- const byName = new Map(tools.map((t) => [t.name, t]));
13
- // Outer loop: genuinely sequential — each step's model call reads `messages`, which only gains this
14
- // step's tool results after they're appended below; there is nothing to await concurrently across steps.
15
- for (let step = 0; step < maxSteps; step++) {
16
- // oxlint-disable-next-line no-await-in-loop
17
- const r = await inference.generate({ messages, tools });
18
- if (r.toolCalls && r.toolCalls.length > 0) {
19
- // one assistant turn carrying the tool_calls, then one tool turn per result (OpenAI convention; the
20
- // adapter maps it to the provider wire format). Unknown tools are surfaced, never thrown — self-correct.
21
- messages.push({ role: "assistant", content: r.text ?? "", toolCalls: r.toolCalls });
22
- // Inner loop: kept sequential too — tools are governed ports (kv_incr etc.) whose side effects can
23
- // be order-sensitive; parallelizing would reorder effects the model issued in a specific sequence.
24
- for (const tc of r.toolCalls) {
25
- const tool = byName.get(tc.name);
26
- // oxlint-disable-next-line no-await-in-loop
27
- const result = tool ? await tool.run(tc.args) : { error: `unknown tool: ${tc.name}` };
28
- messages.push({ role: "tool", content: JSON.stringify(result), toolCallId: tc.id });
29
- }
30
- continue; // let the model see the tool results and decide next
31
- }
32
- return { output: r.text ?? "", steps: step + 1 };
33
- }
34
- throw new Error(`harness: maxSteps ${maxSteps} exhausted without a final answer`);
35
- },
36
- });
37
- /**
38
- * fakeInference — a scripted model for TDD (no network, deterministic). Pass the exact turn sequence the loop
39
- * should see: each entry is either tool calls or final text. This is how the agent loop is unit-tested; the
40
- * real adapter (AI Gateway / Anthropic) plugs into the same Inference port at deploy.
41
- */
42
- export const fakeInference = (script) => {
43
- let i = 0;
44
- return { async generate() { return script[i++] ?? { text: "(script exhausted)" }; } };
45
- };
46
- /**
47
- * portsAsTools — expose selected resource ports to the agent as callable tools. THIS is governed-tools = ports:
48
- * the agent can only act through capabilities the cord declared + the host bound. `onTool` lets the cord audit
49
- * every call (one wide-event per action). ponytail: only the ports you pass become tools — nothing else.
50
- */
51
- export const portsAsTools = (res, onTool) => {
52
- const tools = [];
53
- if (res.kv) {
54
- tools.push({
55
- name: "kv_incr",
56
- description: "Increment a durable counter by key. args: { key: string, by?: number }",
57
- parameters: { type: "object", properties: { key: { type: "string" }, by: { type: "number" } }, required: ["key"] },
58
- run: async (a) => { onTool?.("kv_incr", a); return { count: await res.kv.incr(String(a['key']), typeof a['by'] === "number" ? a['by'] : 1) }; },
59
- });
60
- }
61
- if (res.vault) {
62
- tools.push({
63
- name: "vault_put",
64
- description: "Persist a deliverable. args: { key: string, body: string }",
65
- parameters: { type: "object", properties: { key: { type: "string" }, body: { type: "string" } }, required: ["key", "body"] },
66
- run: async (a) => { onTool?.("vault_put", a); return await res.vault.put(String(a['key']), String(a['body'])); },
67
- });
68
- }
69
- // add source/sql/vector tools here as a cord needs them (ponytail: not before)
70
- return tools;
71
- };
72
- //# sourceMappingURL=agent.js.map
package/dist/agent.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"agui.d.ts","sourceRoot":"","sources":["../src/agui.ts"],"names":[],"mappings":"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"}
package/dist/agui.js DELETED
@@ -1,22 +0,0 @@
1
- // agui.ts — the cord's event layer: a typed, AG-UI-aligned stream of what the cord is doing. It is THREE things
2
- // at once: (1) the cord↔UI wire (AG-UI), (2) the observability story (one event per step — the "stack trace" the
3
- // playground renders in motion), and (3) what the thin typed client consumes. Events are plain JSON so the host
4
- // can persist them on the DO (durable → the timeline survives reload) and replay them to a reconnecting client.
5
- // Hoisted from inside createEmitter (captures nothing — pure).
6
- const now = () => Date.now();
7
- export function createEmitter(runId, sink) {
8
- const send = (event) => sink(event);
9
- return {
10
- runId,
11
- started: (threadId) => send({ type: "RUN_STARTED", runId, threadId, ts: now() }),
12
- text: (delta) => send({ type: "TEXT_MESSAGE_CONTENT", runId, delta, ts: now() }),
13
- toolStart: (toolCallId, name, args) => send({ type: "TOOL_CALL_START", runId, toolCallId, name, args, ts: now() }),
14
- toolResult: (r) => send({ type: "TOOL_CALL_RESULT", runId, ...r, ts: now() }),
15
- sourceStaged: (path) => send({ type: "SOURCE_STAGED", runId, path, ts: now() }),
16
- sourceCommitted: (paths, external) => send({ type: "SOURCE_COMMITTED", runId, paths, external, ts: now() }),
17
- stateDelta: (patch) => send({ type: "STATE_DELTA", runId, patch, ts: now() }),
18
- finished: () => send({ type: "RUN_FINISHED", runId, ts: now() }),
19
- errored: (error) => send({ type: "RUN_ERROR", runId, error, ts: now() }),
20
- };
21
- }
22
- //# sourceMappingURL=agui.js.map
package/dist/agui.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"agui.js","sourceRoot":"","sources":["../src/agui.ts"],"names":[],"mappings":"AAAA,gHAAgH;AAChH,iHAAiH;AACjH,gHAAgH;AAChH,gHAAgH;AAoChH,+DAA+D;AAC/D,MAAM,GAAG,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;AAErC,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,IAAoB;IAC/D,MAAM,IAAI,GAAG,CAAC,KAAiB,EAAQ,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,OAAO;QACL,KAAK;QACL,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;QAChF,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;QAChF,SAAS,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;QAClH,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;QAC7E,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;QAC/E,eAAe,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;QAC3G,UAAU,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;QAC7E,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;QAChE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC;KACzE,CAAC;AACJ,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE/C,oHAAoH;AACpH,MAAM,WAAW,aAAa;IAC5B,uGAAuG;IACvG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE;QACL,uEAAuE;QACvE,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,sDAAsD;QACtD,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,kHAAkH;AAClH,MAAM,MAAM,WAAW,GACnB;IAAE,OAAO,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC5D;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC5C;IAAE,OAAO,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AAE9D,mGAAmG;AACnG,oGAAoG;AACpG,MAAM,WAAW,WAAW,CAAC,GAAG,GAAG,OAAO;IACxC,qFAAqF;IACrF,EAAE,EAAE,MAAM,CAAC;IACX,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB,mFAAmF;IACnF,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,8IAA8I;IAC9I,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4KAA4K;IAC5K,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACpB,kHAAkH;IAClH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,kDAAkD;IAClD,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,yHAAyH;AACzH,wBAAgB,iBAAiB,CAAC,GAAG,GAAG,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAE3F;AAED;;4GAE4G;AAC5G,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,GAAG,OAAO,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAA;CAAE,CAAC,CAQjK"}
package/dist/config.js DELETED
@@ -1,39 +0,0 @@
1
- /**
2
- * Define a cord. Identity at runtime; inference + docs at authoring time.
3
- *
4
- * ```ts
5
- * import { defineAgentConfig, defineTool } from "@op0-ai/cord";
6
- * import { z } from "zod";
7
- *
8
- * export default defineAgentConfig({
9
- * id: "tidecheck",
10
- * charter: "Answer tide-time questions for surfers, briefly, with units.",
11
- * runSpec: { goal: "answer tersely", stop: { budget: 500, steps: 4 } },
12
- * tools: [
13
- * defineTool({
14
- * name: "tide_lookup",
15
- * description: "Look up the next tide for a beach",
16
- * input: z.object({ beach: z.string() }),
17
- * execute: async ({ beach }) => ({ beach, low: "14:02", height: "+0.3m" }),
18
- * }),
19
- * ],
20
- * });
21
- * ```
22
- */
23
- /** @deprecated use defineAgentConfig (same function — an agent is the unit; fleets compose agents); removed in 0.3.0. */
24
- export function defineAgentConfig(config) {
25
- return config;
26
- }
27
- /** Project governed tools → the OpenAI-compat `tools` array (function calling through the AI Gateway).
28
- * Zero zod import here — zod 4 schema INSTANCES self-convert (`schema.toJSONSchema()`), so the zod
29
- * runtime rides in with the author's schemas and the factory-lean bundle stays small (40KB, not 570KB). */
30
- export function toolsToOpenAI(tools) {
31
- const list = Array.isArray(tools) ? tools : Object.values(tools);
32
- return list.map((t) => {
33
- const schema = t.inputSchema;
34
- if (typeof schema.toJSONSchema !== "function")
35
- throw new Error(`tool "${t.name}": inputSchema has no toJSONSchema() — zod 4.4+ schemas required`);
36
- return { type: "function", function: { name: t.name, description: t.description, parameters: schema.toJSONSchema() } };
37
- });
38
- }
39
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AA6CA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,yHAAyH;AACzH,MAAM,UAAU,iBAAiB,CAAgB,MAAwB;IACvE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;4GAE4G;AAC5G,MAAM,UAAU,aAAa,CAAC,KAAgC;IAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACpB,MAAM,MAAM,GAAG,CAAC,CAAC,WAA0D,CAAC;QAC5E,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU;YAC3C,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,kEAAkE,CAAC,CAAC;QACrG,OAAO,EAAE,IAAI,EAAE,UAAmB,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,MAAM,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC;IAClI,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"AAgBA,+EAA+E;AAC/E,MAAM,MAAM,QAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE,MAAM,MAAM,iBAAiB,GACzB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,QAAQ,EAAE,CAAA;CAAE,GAClC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjC,yFAAyF;AACzF,eAAO,MAAM,SAAS;;;CAAiD,CAAC;AAExE;;sGAEsG;AACtG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,GAAG,iBAAiB,CAgB/E;AAED;;uFAEuF;AACvF,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,CAYlE;AAED,0DAA0D;AAC1D,MAAM,MAAM,aAAa,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvE;2EAC2E;AAC3E,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAClC,cAAc,CAAC,EAAE,KAAK,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC,GACxG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAS/B"}
package/dist/contract.js DELETED
@@ -1,66 +0,0 @@
1
- /** The contract's caps — exported so clients can pre-trim instead of learning by 400. */
2
- export const CHAT_CAPS = { maxMessages: 40, maxChars: 96_000 };
3
- /** Law 1 — validateMessages: absent input degrades to a one-shot { q } turn; present input must be
4
- * a non-empty user/assistant thread, ≤40 messages, ≤96k chars, ending on a user turn. System roles
5
- * are refused BY DESIGN: the agent's charter is its system prompt — reachability never authority. */
6
- export function validateMessages(input, q) {
7
- if (input == null)
8
- return { ok: true, messages: [{ role: "user", content: String(q ?? "hello") }] };
9
- if (!Array.isArray(input) || input.length === 0)
10
- return { ok: false, error: "messages: a non-empty array is required" };
11
- if (input.length > CHAT_CAPS.maxMessages)
12
- return { ok: false, error: `messages: ${input.length} exceeds the ${CHAT_CAPS.maxMessages}-message cap — trim or summarize the thread client-side` };
13
- let chars = 0;
14
- const messages = [];
15
- for (const m of input) {
16
- const role = m?.role, content = m?.content;
17
- if (role !== "user" && role !== "assistant")
18
- return { ok: false, error: `messages: role '${String(role)}' refused — only user/assistant (the charter is this cord's system prompt)` };
19
- if (typeof content !== "string" || content.length === 0)
20
- return { ok: false, error: "messages: every content must be a non-empty string" };
21
- chars += content.length;
22
- messages.push({ role, content });
23
- }
24
- if (chars > CHAT_CAPS.maxChars)
25
- return { ok: false, error: `messages: the thread is ${chars} chars (cap ${CHAT_CAPS.maxChars}) — summarize or trim client-side` };
26
- if (messages[messages.length - 1]?.role !== "user")
27
- return { ok: false, error: "messages: the last message must be from the user" };
28
- return { ok: true, messages };
29
- }
30
- /** Law 2 — sniffTurn: an accumulating OpenAI-compat SSE buffer → "tool" the moment any delta
31
- * carries tool_calls, "content" the moment any delta carries non-empty content, "open" while
32
- * neither has appeared (partial lines are skipped, kept for the next sniff). Pure. */
33
- export function sniffTurn(buf) {
34
- for (const line of buf.split("\n")) {
35
- if (!line.startsWith("data:"))
36
- continue;
37
- const p = line.slice(5).trim();
38
- if (!p || p === "[DONE]")
39
- continue;
40
- try {
41
- const d = JSON.parse(p)?.choices?.[0]?.delta;
42
- if (d?.tool_calls?.length)
43
- return "tool";
44
- if (typeof d?.content === "string" && d.content.length)
45
- return "content";
46
- }
47
- catch { /* partial line — not sniffable yet */ }
48
- }
49
- return "open";
50
- }
51
- /** Law 3 — accumToolCalls: OpenAI splits {index, id?, function:{name?, arguments fragment}} over
52
- * many chunks; arguments CONCATENATE per index. Mutates + returns acc. */
53
- export function accumToolCalls(acc, deltaToolCalls) {
54
- for (const t of deltaToolCalls ?? []) {
55
- const i = t.index ?? 0;
56
- acc[i] ??= { id: "", name: "", args: "" };
57
- if (t.id)
58
- acc[i].id = t.id;
59
- if (typeof t.function?.name === "string")
60
- acc[i].name += t.function.name; // fragments concat; a full name arrives once
61
- if (typeof t.function?.arguments === "string")
62
- acc[i].args += t.function.arguments;
63
- }
64
- return acc;
65
- }
66
- //# sourceMappingURL=contract.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"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"}