@op0ai/sdk 0.3.1 → 0.4.1
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/README.md +2 -2
- package/dist/guards.d.ts +1 -61
- package/dist/guards.js +1 -88
- package/dist/hash.d.ts +1 -6
- package/dist/hash.js +1 -18
- package/dist/index.d.ts +1 -121
- package/dist/index.js +14 -171
- package/dist/session.d.ts +1 -47
- package/dist/session.js +2 -88
- package/dist/{agent.d.ts → types/agent.d.ts} +1 -2
- package/dist/{agui.d.ts → types/agui.d.ts} +0 -1
- package/dist/{config.d.ts → types/config.d.ts} +0 -1
- package/dist/{contract.d.ts → types/contract.d.ts} +0 -1
- package/dist/{data.d.ts → types/data.d.ts} +0 -1
- package/dist/{define.d.ts → types/define.d.ts} +0 -1
- package/dist/{distill.d.ts → types/distill.d.ts} +0 -1
- package/dist/{events.d.ts → types/events.d.ts} +0 -1
- package/dist/{evlog.d.ts → types/evlog.d.ts} +0 -1
- package/dist/types/guards.d.ts +60 -0
- package/dist/types/hash.d.ts +5 -0
- package/dist/types/index.d.ts +120 -0
- package/dist/{platform.d.ts → types/platform.d.ts} +0 -1
- package/dist/types/session.d.ts +46 -0
- package/dist/{source.d.ts → types/source.d.ts} +0 -1
- package/dist/{tool.d.ts → types/tool.d.ts} +0 -1
- package/dist/{usectx.d.ts → types/usectx.d.ts} +0 -1
- package/dist/types/vault.d.ts +20 -0
- package/dist/vault.d.ts +1 -21
- package/dist/vault.js +1 -25
- package/package.json +4 -3
- package/dist/agent.d.ts.map +0 -1
- package/dist/agent.js +0 -72
- package/dist/agent.js.map +0 -1
- package/dist/agui.d.ts.map +0 -1
- package/dist/agui.js +0 -22
- package/dist/agui.js.map +0 -1
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -39
- package/dist/config.js.map +0 -1
- package/dist/contract.d.ts.map +0 -1
- package/dist/contract.js +0 -66
- package/dist/contract.js.map +0 -1
- package/dist/data.d.ts.map +0 -1
- package/dist/data.js +0 -211
- package/dist/data.js.map +0 -1
- package/dist/define.d.ts.map +0 -1
- package/dist/define.js +0 -87
- package/dist/define.js.map +0 -1
- package/dist/distill.d.ts.map +0 -1
- package/dist/distill.js +0 -113
- package/dist/distill.js.map +0 -1
- package/dist/events.d.ts.map +0 -1
- package/dist/events.js +0 -25
- package/dist/events.js.map +0 -1
- package/dist/evlog.d.ts.map +0 -1
- package/dist/evlog.js +0 -124
- package/dist/evlog.js.map +0 -1
- package/dist/fleet-names.d.ts +0 -11
- package/dist/fleet-names.d.ts.map +0 -1
- package/dist/fleet-names.js +0 -10
- package/dist/fleet-names.js.map +0 -1
- package/dist/guards.d.ts.map +0 -1
- package/dist/guards.js.map +0 -1
- package/dist/hash.d.ts.map +0 -1
- package/dist/hash.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/platform.d.ts.map +0 -1
- package/dist/platform.js +0 -10
- package/dist/platform.js.map +0 -1
- package/dist/session.d.ts.map +0 -1
- package/dist/session.js.map +0 -1
- package/dist/source.d.ts.map +0 -1
- package/dist/source.js +0 -96
- package/dist/source.js.map +0 -1
- package/dist/tool.d.ts.map +0 -1
- package/dist/tool.js +0 -16
- package/dist/tool.js.map +0 -1
- package/dist/usectx.d.ts.map +0 -1
- package/dist/usectx.js +0 -220
- package/dist/usectx.js.map +0 -1
- package/dist/vault.d.ts.map +0 -1
- package/dist/vault.js.map +0 -1
package/dist/config.d.ts.map
DELETED
|
@@ -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
|
package/dist/config.js.map
DELETED
|
@@ -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"}
|
package/dist/contract.d.ts.map
DELETED
|
@@ -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
|
package/dist/contract.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
|
package/dist/data.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"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"}
|
package/dist/data.js
DELETED
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
import { newId } from "./hash.js";
|
|
2
|
-
/** Author a table from a zod object schema; chain .index(name, cols). */
|
|
3
|
-
export function defineTable(schema) {
|
|
4
|
-
const indexes = {};
|
|
5
|
-
const def = {
|
|
6
|
-
schema,
|
|
7
|
-
indexes,
|
|
8
|
-
index(name, columns) {
|
|
9
|
-
indexes[name] = columns;
|
|
10
|
-
return def;
|
|
11
|
-
},
|
|
12
|
-
};
|
|
13
|
-
return def;
|
|
14
|
-
}
|
|
15
|
-
/** Identity helper — keeps the schema object's literal types while documenting intent. */
|
|
16
|
-
export function defineSchema(schema) {
|
|
17
|
-
return schema;
|
|
18
|
-
}
|
|
19
|
-
export function query(def) {
|
|
20
|
-
return { kind: "query", args: def.args, handler: def.handler };
|
|
21
|
-
}
|
|
22
|
-
export function mutation(def) {
|
|
23
|
-
return { kind: "mutation", args: def.args, handler: def.handler };
|
|
24
|
-
}
|
|
25
|
-
export function action(def) {
|
|
26
|
-
return { kind: "action", args: def.args, handler: def.handler };
|
|
27
|
-
}
|
|
28
|
-
const rowKey = (table, id) => `${table}:${id}`;
|
|
29
|
-
export class DataEngine {
|
|
30
|
-
schema;
|
|
31
|
-
functions;
|
|
32
|
-
tables = new Map();
|
|
33
|
-
subs = new Map();
|
|
34
|
-
version = 0;
|
|
35
|
-
constructor(schema, functions) {
|
|
36
|
-
this.schema = schema;
|
|
37
|
-
this.functions = functions;
|
|
38
|
-
for (const t of Object.keys(schema))
|
|
39
|
-
this.tables.set(t, new Map());
|
|
40
|
-
}
|
|
41
|
-
table(name) {
|
|
42
|
-
const t = this.tables.get(name);
|
|
43
|
-
if (!t)
|
|
44
|
-
throw new Error(`data: unknown table "${name}"`);
|
|
45
|
-
return t;
|
|
46
|
-
}
|
|
47
|
-
/** A read-db that records into `rs` (null = untracked, for mutation-internal reads). */
|
|
48
|
-
readDb(rs) {
|
|
49
|
-
const self = this;
|
|
50
|
-
return {
|
|
51
|
-
get(table, id) {
|
|
52
|
-
rs?.rows.add(rowKey(table, id));
|
|
53
|
-
return self.table(table).get(id) ?? null;
|
|
54
|
-
},
|
|
55
|
-
query(table) {
|
|
56
|
-
rs?.tables.add(table); // a scan depends on the whole table (coarse but correct — never under-recomputes)
|
|
57
|
-
const filters = [];
|
|
58
|
-
const builder = {
|
|
59
|
-
withIndex(_name, fn) {
|
|
60
|
-
const iq = { eq(col, val) { filters.push({ col, val }); return iq; } };
|
|
61
|
-
fn(iq);
|
|
62
|
-
return builder;
|
|
63
|
-
},
|
|
64
|
-
collect() {
|
|
65
|
-
const rows = [...self.table(table).values()].filter((r) => filters.every((f) => r[f.col] === f.val));
|
|
66
|
-
return rows;
|
|
67
|
-
},
|
|
68
|
-
first() {
|
|
69
|
-
return [...self.table(table).values()].find((r) => filters.every((f) => r[f.col] === f.val)) ?? null;
|
|
70
|
-
},
|
|
71
|
-
};
|
|
72
|
-
return builder;
|
|
73
|
-
},
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
writeDb(writes) {
|
|
77
|
-
const self = this;
|
|
78
|
-
const read = this.readDb(null);
|
|
79
|
-
return {
|
|
80
|
-
get: read.get,
|
|
81
|
-
query: read.query,
|
|
82
|
-
insert(table, doc) {
|
|
83
|
-
self.table(table); // validate table exists
|
|
84
|
-
const id = typeof doc['id'] === "string" ? doc['id'] : newId();
|
|
85
|
-
const def = self.schema[table];
|
|
86
|
-
if (!def)
|
|
87
|
-
throw new Error(`data: unknown table "${table}"`);
|
|
88
|
-
def.schema.parse({ ...doc, id }); // zod-validate the row shape
|
|
89
|
-
self.table(table).set(id, { ...doc, id, _v: self.version }); // version already bumped for this mutation
|
|
90
|
-
writes.push({ table, id });
|
|
91
|
-
return id;
|
|
92
|
-
},
|
|
93
|
-
patch(table, id, partial) {
|
|
94
|
-
const cur = self.table(table).get(id);
|
|
95
|
-
if (!cur)
|
|
96
|
-
throw new Error(`data: patch missing ${table}:${id}`);
|
|
97
|
-
const next = { ...cur, ...partial, id, _v: self.version };
|
|
98
|
-
const def = self.schema[table];
|
|
99
|
-
if (!def)
|
|
100
|
-
throw new Error(`data: unknown table "${table}"`);
|
|
101
|
-
def.schema.parse(next);
|
|
102
|
-
self.table(table).set(id, next);
|
|
103
|
-
writes.push({ table, id });
|
|
104
|
-
},
|
|
105
|
-
delete(table, id) {
|
|
106
|
-
if (self.table(table).delete(id))
|
|
107
|
-
writes.push({ table, id });
|
|
108
|
-
},
|
|
109
|
-
};
|
|
110
|
-
}
|
|
111
|
-
fn(name, kind) {
|
|
112
|
-
const f = this.functions[name];
|
|
113
|
-
if (!f)
|
|
114
|
-
throw new Error(`data: unknown function "${name}"`);
|
|
115
|
-
if (f.kind !== kind)
|
|
116
|
-
throw new Error(`data: "${name}" is a ${f.kind}, not a ${kind}`);
|
|
117
|
-
return f;
|
|
118
|
-
}
|
|
119
|
-
/** Run a query (tracked). Returns the result + the read-set (for subscription registration). */
|
|
120
|
-
runQuery(name, args) {
|
|
121
|
-
const f = this.fn(name, "query");
|
|
122
|
-
const rs = { rows: new Set(), tables: new Set() };
|
|
123
|
-
const result = f.handler(this.readDb(rs), f.args.parse(args));
|
|
124
|
-
return { result, readSet: rs, version: this.version };
|
|
125
|
-
}
|
|
126
|
-
/** Run a mutation (single-writer), bump the version, then recompute ONLY the subscriptions whose read-set intersects the write. */
|
|
127
|
-
runMutation(name, args) {
|
|
128
|
-
const f = this.fn(name, "mutation");
|
|
129
|
-
const writes = [];
|
|
130
|
-
this.version += 1;
|
|
131
|
-
const result = f.handler(this.writeDb(writes), f.args.parse(args));
|
|
132
|
-
const writtenTables = new Set(writes.map((w) => w.table));
|
|
133
|
-
const writtenRows = new Set(writes.map((w) => rowKey(w.table, w.id)));
|
|
134
|
-
const transitions = [];
|
|
135
|
-
for (const sub of this.subs.values()) {
|
|
136
|
-
const hit = [...sub.readSet.tables].some((t) => writtenTables.has(t)) ||
|
|
137
|
-
[...sub.readSet.rows].some((r) => writtenRows.has(r));
|
|
138
|
-
if (!hit)
|
|
139
|
-
continue;
|
|
140
|
-
const re = this.runQuery(sub.name, sub.args); // re-execute → FULL result
|
|
141
|
-
sub.readSet = re.readSet; // refresh the read-set (deps can change)
|
|
142
|
-
transitions.push({ subId: sub.subId, connId: sub.connId, name: sub.name, args: sub.args, result: re.result, version: this.version });
|
|
143
|
-
}
|
|
144
|
-
return { result, version: this.version, transitions };
|
|
145
|
-
}
|
|
146
|
-
/** Run an action (I/O escape hatch): it calls query/mutation through the ctx; not reactive. */
|
|
147
|
-
async runAction(name, args, bridge) {
|
|
148
|
-
const f = this.fn(name, "action");
|
|
149
|
-
const ctx = {
|
|
150
|
-
runQuery: (n, a) => this.runQuery(n, a).result,
|
|
151
|
-
runMutation: (n, a) => this.runMutation(n, a).result,
|
|
152
|
-
...(bridge?.runCordTool !== undefined ? { runCordTool: bridge.runCordTool } : {}),
|
|
153
|
-
};
|
|
154
|
-
return f.handler(ctx, f.args.parse(args));
|
|
155
|
-
}
|
|
156
|
-
/** Register a live subscription: returns the initial result; future intersecting mutations push Transitions. */
|
|
157
|
-
subscribe(subId, connId, name, args) {
|
|
158
|
-
const { result, readSet, version } = this.runQuery(name, args);
|
|
159
|
-
this.subs.set(subId, { subId, connId, name, args, readSet });
|
|
160
|
-
return { result, version };
|
|
161
|
-
}
|
|
162
|
-
unsubscribe(subId) {
|
|
163
|
-
this.subs.delete(subId);
|
|
164
|
-
}
|
|
165
|
-
/** Drop all subscriptions for a connection (on WS close). */
|
|
166
|
-
unsubscribeConn(connId) {
|
|
167
|
-
for (const [id, s] of this.subs)
|
|
168
|
-
if (s.connId === connId)
|
|
169
|
-
this.subs.delete(id);
|
|
170
|
-
}
|
|
171
|
-
/** Durability: snapshot the tables (persist to the DO's this.sql) and restore on wake. */
|
|
172
|
-
snapshot() {
|
|
173
|
-
const out = {};
|
|
174
|
-
for (const [t, m] of this.tables)
|
|
175
|
-
out[t] = [...m.values()];
|
|
176
|
-
return { version: this.version, tables: out };
|
|
177
|
-
}
|
|
178
|
-
restore(snap) {
|
|
179
|
-
this.version = snap.version;
|
|
180
|
-
for (const [t, rows] of Object.entries(snap.tables)) {
|
|
181
|
-
const m = this.tables.get(t) ?? new Map();
|
|
182
|
-
m.clear();
|
|
183
|
-
for (const r of rows)
|
|
184
|
-
m.set(r.id, r);
|
|
185
|
-
this.tables.set(t, m);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Dispatch a DataRequest against the engine. The DO host wires this into its fetch (one-shot query/mutation/
|
|
191
|
-
* action) and its WebSocket handler (subscribe/unsubscribe), then BROADCASTS the returned `transitions` to the
|
|
192
|
-
* subscribed connections (group by transition.connId). Persist engine.snapshot() to this.sql after a mutation.
|
|
193
|
-
*/
|
|
194
|
-
export async function dataPlaneRpc(engine, req, connId = "rpc") {
|
|
195
|
-
try {
|
|
196
|
-
switch (req.op) {
|
|
197
|
-
case "query": return { ok: true, ...engine.runQuery(req.name, req.args) };
|
|
198
|
-
case "subscribe": return { ok: true, ...engine.subscribe(req.subId, connId, req.name, req.args) };
|
|
199
|
-
case "unsubscribe":
|
|
200
|
-
engine.unsubscribe(req.subId);
|
|
201
|
-
return { ok: true };
|
|
202
|
-
case "mutation": return { ok: true, ...engine.runMutation(req.name, req.args) };
|
|
203
|
-
case "action": return { ok: true, result: await engine.runAction(req.name, req.args) };
|
|
204
|
-
default: return { ok: false, error: "unknown op" };
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
catch (e) {
|
|
208
|
-
return { ok: false, error: e instanceof Error ? e.message : String(e) };
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
//# sourceMappingURL=data.js.map
|
package/dist/data.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"data.js","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"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"}
|
package/dist/define.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,iHAAiH;AACjH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,CAAC,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC;IACxE,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AASD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG;IAAE,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,UAAU,EAAE,CAAA;CAAE,CA6BpH;AAED,wFAAwF;AACxF,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,EAAE,CAAC;IACR,+HAA+H;IAC/H,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;CACvG;AAED;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC,CAgCvF"}
|
package/dist/define.js
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
// Hoisted from inside agentEventStore (captures nothing — pure formatting of its own params).
|
|
2
|
-
const log = (where, e) => console.log(JSON.stringify({ evlog: `cord_events.${where}`, error: e instanceof Error ? e.message : String(e) }));
|
|
3
|
-
// Hoisted from inside cordRpc (captures nothing — pure formatting of its own params).
|
|
4
|
-
const json = (body, status = 200) => new Response(JSON.stringify(body), { status, headers: { "content-type": "application/json" } });
|
|
5
|
-
/**
|
|
6
|
-
* Durable AG-UI event log on the cord's DO: every event is persisted (so the timeline survives reload) AND the
|
|
7
|
-
* sink broadcasts it live; replay() feeds onConnect so a reconnecting client reconstructs the timeline.
|
|
8
|
-
*/
|
|
9
|
-
export function agentEventStore(host) {
|
|
10
|
-
let ready = false;
|
|
11
|
-
try {
|
|
12
|
-
void host.sql `CREATE TABLE IF NOT EXISTS cord_events (seq INTEGER PRIMARY KEY AUTOINCREMENT, run TEXT, json TEXT)`;
|
|
13
|
-
ready = true;
|
|
14
|
-
}
|
|
15
|
-
catch (e) {
|
|
16
|
-
log("init", e);
|
|
17
|
-
}
|
|
18
|
-
return {
|
|
19
|
-
// Never throw — a failed event must not break a chat turn; log so the tail reveals any this.sql/broadcast issue.
|
|
20
|
-
sink: (event) => {
|
|
21
|
-
if (!ready)
|
|
22
|
-
return;
|
|
23
|
-
try {
|
|
24
|
-
void host.sql `INSERT INTO cord_events (run, json) VALUES (${event.runId}, ${JSON.stringify(event)})`;
|
|
25
|
-
host.broadcast(JSON.stringify({ cordEvent: event }));
|
|
26
|
-
}
|
|
27
|
-
catch (e) {
|
|
28
|
-
log("sink", e);
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
replay: () => {
|
|
32
|
-
if (!ready)
|
|
33
|
-
return [];
|
|
34
|
-
try {
|
|
35
|
-
return host.sql `SELECT json FROM cord_events ORDER BY seq`.map((row) => JSON.parse(row.json));
|
|
36
|
-
}
|
|
37
|
-
catch (e) {
|
|
38
|
-
log("replay", e);
|
|
39
|
-
return [];
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Serve the typed cord client's RPC calls (POST { fn, args }). Wire into the cord's `fetch` (e.g. at /api/cord/rpc):
|
|
46
|
-
* the built-in source.read/source.edit/kv.get/kv.put map onto the Source + Kv ports; register more via `functions`.
|
|
47
|
-
* This is the server half of the thin typed client (client.tsx). RPC edits commit immediately (no debounce).
|
|
48
|
-
*/
|
|
49
|
-
export async function cordRpc(request, ctx) {
|
|
50
|
-
let parsed;
|
|
51
|
-
try {
|
|
52
|
-
parsed = (await request.json());
|
|
53
|
-
}
|
|
54
|
-
catch {
|
|
55
|
-
return json({ error: "invalid json" }, 400);
|
|
56
|
-
}
|
|
57
|
-
const fn = parsed.fn ?? "";
|
|
58
|
-
const args = parsed.args ?? {};
|
|
59
|
-
const builtins = {
|
|
60
|
-
"source.read": async (a) => ({ path: a['path'], content: ctx.source ? await ctx.source.read(String(a['path'])) : null }),
|
|
61
|
-
"source.edit": async (a) => {
|
|
62
|
-
if (!ctx.source)
|
|
63
|
-
throw new Error("no source bound");
|
|
64
|
-
await ctx.source.stage(String(a['path']), String(a['content']));
|
|
65
|
-
await ctx.source.flush(); // direct RPC write commits immediately (no debounce)
|
|
66
|
-
return { staged: String(a['path']), commitsInSeconds: 0 };
|
|
67
|
-
},
|
|
68
|
-
"kv.get": async (a) => ({ value: ctx.kv ? await ctx.kv.get(String(a['key'])) : null }),
|
|
69
|
-
"kv.put": async (a) => {
|
|
70
|
-
if (!ctx.kv)
|
|
71
|
-
throw new Error("no kv bound");
|
|
72
|
-
await ctx.kv.put(String(a['key']), String(a['value']));
|
|
73
|
-
return { ok: true };
|
|
74
|
-
},
|
|
75
|
-
};
|
|
76
|
-
const custom = ctx.functions?.[fn];
|
|
77
|
-
const handler = builtins[fn] ?? (custom ? (a) => custom(a, ctx) : undefined);
|
|
78
|
-
if (!handler)
|
|
79
|
-
return json({ error: `unknown fn: ${fn}` }, 404);
|
|
80
|
-
try {
|
|
81
|
-
return json(await handler(args));
|
|
82
|
-
}
|
|
83
|
-
catch (e) {
|
|
84
|
-
return json({ error: e instanceof Error ? e.message : String(e) }, 500);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
//# sourceMappingURL=define.js.map
|
package/dist/define.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"define.js","sourceRoot":"","sources":["../src/define.ts"],"names":[],"mappings":"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"}
|
package/dist/distill.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"distill.d.ts","sourceRoot":"","sources":["../src/distill.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAiB,KAAK,aAAa,EAAqB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AACvG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,CAAC;AAE7C,gFAAgF;AAChF,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;CAChC;AAID;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,KAAK,GAAE,UAAU,EAAO,GAAG,OAAO,CAqB7G;AAED,oIAAoI;AACpI,wBAAgB,YAAY,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAG3D;AAED,oGAAoG;AACpG,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE;QACR,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,EAAE,aAAa,CAAC;QACtB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,EAAE,EAAE,OAAO,CAAC;QACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,2HAA2H;AAC3H,wBAAgB,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,UAAU,CAgC9F;AAED,2IAA2I;AAC3I,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,CAiBvJ;AAED,oGAAoG;AACpG,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAErF,iEAAiE;AACjE,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,SAAS,CAKzD;AAED,wHAAwH;AACxH,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD;AAID;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAOvF"}
|
package/dist/distill.js
DELETED
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { ingestSession } from "./session.js";
|
|
2
|
-
const iso = (ts) => new Date(ts).toISOString();
|
|
3
|
-
/**
|
|
4
|
-
* Build a Session from a cord runtime session's AgentEvent timeline (e.g. agentEventStore.replay() filtered by
|
|
5
|
-
* runId). Pairs TOOL_CALL_START/RESULT into one wide-event with a real durationMs; folds in source commits + errors.
|
|
6
|
-
*/
|
|
7
|
-
export function agentSessionFromEvents(runId, events, audit = []) {
|
|
8
|
-
const wide = [];
|
|
9
|
-
const open = new Map();
|
|
10
|
-
for (const e of events) {
|
|
11
|
-
if (e.type === "TOOL_CALL_START") {
|
|
12
|
-
open.set(e.toolCallId, { name: e.name, ts: e.ts });
|
|
13
|
-
}
|
|
14
|
-
else if (e.type === "TOOL_CALL_RESULT") {
|
|
15
|
-
const s = open.get(e.toolCallId);
|
|
16
|
-
open.delete(e.toolCallId);
|
|
17
|
-
wide.push({
|
|
18
|
-
ts: iso(e.ts), runId, tenantId: "cord", cordId: "cord", kind: "tool", name: e.name,
|
|
19
|
-
durationMs: s ? e.ts - s.ts : 0, ok: e.ok,
|
|
20
|
-
...(e.ok ? {} : { error: { code: "tool_error", why: e.error ?? "" } }),
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
else if (e.type === "SOURCE_COMMITTED") {
|
|
24
|
-
wide.push({ ts: iso(e.ts), runId, tenantId: "cord", cordId: "cord", kind: "tool", name: "source.commit", durationMs: 0, ok: true, attrs: { paths: e.paths } });
|
|
25
|
-
}
|
|
26
|
-
else if (e.type === "RUN_ERROR") {
|
|
27
|
-
wide.push({ ts: iso(e.ts), runId, tenantId: "cord", cordId: "cord", kind: "turn", name: "run", durationMs: 0, ok: false, error: { code: "run_error", why: e.error } });
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return { runId, source: "cord", events: wide, audit };
|
|
31
|
-
}
|
|
32
|
-
/** Build a Session from a coding-agent capture (lapdog/trajectory) via session.ts ingest (→ WideEvents + audit + interceptions). */
|
|
33
|
-
export function agentSession(stream) {
|
|
34
|
-
const t = ingestSession(stream);
|
|
35
|
-
return { runId: t.runId, source: "agent", harness: t.harness, mode: t.mode, events: t.events, audit: t.audit, interceptions: t.interceptions };
|
|
36
|
-
}
|
|
37
|
-
/** Deterministic distillation: summarize a session (+ optional human note) into a SkillDraft skeleton. No model needed. */
|
|
38
|
-
export function distill(session, note, opts = {}) {
|
|
39
|
-
const tools = [];
|
|
40
|
-
const failures = [];
|
|
41
|
-
for (const e of session.events) {
|
|
42
|
-
if (e.kind === "tool" && !tools.includes(e.name))
|
|
43
|
-
tools.push(e.name);
|
|
44
|
-
if (!e.ok)
|
|
45
|
-
failures.push(`${e.name}: ${e.error?.why ?? "failed"}`);
|
|
46
|
-
}
|
|
47
|
-
const flagged = (session.interceptions ?? []).filter((i) => i.decision !== "allow").map((i) => `${i.rule.id} (${i.decision})`);
|
|
48
|
-
const ok = failures.length === 0 && flagged.every((f) => !f.includes("(deny)"));
|
|
49
|
-
const name = opts.name ?? `${session.source}-${tools[0] ?? "session"}-pattern`;
|
|
50
|
-
const seq = session.events.filter((e) => e.kind === "tool").map((e) => e.name);
|
|
51
|
-
const documentation = [
|
|
52
|
-
`# ${name}`,
|
|
53
|
-
"",
|
|
54
|
-
note ? `> ${note}` : `> Distilled from a ${session.source} session (run ${session.runId}).`,
|
|
55
|
-
"",
|
|
56
|
-
"## Observed pattern",
|
|
57
|
-
seq.length ? seq.map((n, i) => `${i + 1}. ${n}`).join("\n") : "_(no tool steps)_",
|
|
58
|
-
"",
|
|
59
|
-
"## Tools",
|
|
60
|
-
tools.length ? tools.map((t) => `- ${t}`).join("\n") : "_(none)_",
|
|
61
|
-
failures.length ? `\n## Failures observed\n${failures.map((f) => `- ${f}`).join("\n")}` : "",
|
|
62
|
-
flagged.length ? `\n## Governance flags\n${flagged.map((f) => `- ${f}`).join("\n")}` : "",
|
|
63
|
-
].filter(Boolean).join("\n");
|
|
64
|
-
return {
|
|
65
|
-
name,
|
|
66
|
-
description: `${session.source} session pattern over ${tools.length} tool(s): ${tools.slice(0, 4).join(", ") || "—"}.`,
|
|
67
|
-
whenToUse: note ?? `When repeating the ${tools[0] ?? "this"} workflow distilled from run ${session.runId}.`,
|
|
68
|
-
documentation,
|
|
69
|
-
tags: ["distilled", session.source, ...(opts.tags ?? [])],
|
|
70
|
-
evidence: { sourceRunId: session.runId, source: session.source, tools, steps: session.events.length, ok, failures, flagged, ...(note !== undefined ? { note } : {}) },
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
/** Optional model-backed enrichment: the Inference port sharpens name/description/whenToUse/doc; falls back to the deterministic draft. */
|
|
74
|
-
export async function distillWithModel(session, note, inference, opts = {}) {
|
|
75
|
-
const base = distill(session, note, opts);
|
|
76
|
-
const prompt = "You distill agent sessions into reusable skills. Given this evidence, write a crisp, reusable skill.\n" +
|
|
77
|
-
`Evidence: ${JSON.stringify(base.evidence)}\nNote: ${note ?? "(none)"}\n` +
|
|
78
|
-
'Return ONLY JSON: {"name","description","whenToUse","documentation"}.';
|
|
79
|
-
try {
|
|
80
|
-
const res = await inference.generate({ messages: [{ role: "user", content: prompt }] });
|
|
81
|
-
const m = (res.text ?? "").match(/\{[\s\S]*\}/);
|
|
82
|
-
if (m) {
|
|
83
|
-
const j = JSON.parse(m[0]);
|
|
84
|
-
return { ...base, ...j };
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
catch {
|
|
88
|
-
/* fall back to the deterministic draft */
|
|
89
|
-
}
|
|
90
|
-
return base;
|
|
91
|
-
}
|
|
92
|
-
/** A no-network sink that collects drafts (tests + dry runs). */
|
|
93
|
-
export function collectSink(into) {
|
|
94
|
-
return async (draft) => {
|
|
95
|
-
into.push(draft);
|
|
96
|
-
return { ok: true, id: draft.name };
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
const slugify = (s) => s.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 80) || "skill";
|
|
100
|
-
/**
|
|
101
|
-
* Persist a SkillDraft to a durable store as `<prefix>/<slug>.md` (the skill doc) + `<prefix>/<slug>.json` (the
|
|
102
|
-
* structured draft, for promotion to a real KB skill). Returns the `.md` path as the id. Wire `store.put` to the
|
|
103
|
-
* cord's Source so a distilled session becomes a committed artifact (R2 + GitHub) — not just a returned object.
|
|
104
|
-
*/
|
|
105
|
-
export function storeSkillSink(store, opts) {
|
|
106
|
-
return async (draft) => {
|
|
107
|
-
const base = `${opts?.prefix ?? "skills"}/${slugify(draft.name)}`;
|
|
108
|
-
await store.put(`${base}.md`, draft.documentation);
|
|
109
|
-
await store.put(`${base}.json`, JSON.stringify(draft, null, 2));
|
|
110
|
-
return { ok: true, id: `${base}.md` };
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
//# sourceMappingURL=distill.js.map
|
package/dist/distill.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"distill.js","sourceRoot":"","sources":["../src/distill.ts"],"names":[],"mappings":"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"}
|
package/dist/events.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"AAaA,4FAA4F;AAC5F,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,EAAE,KAAK,CAAC;IACZ,4GAA4G;IAC5G,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,GAAG,EAAE,MAAM,CAAC;IACZ,EAAE,EAAE,OAAO,CAAC;IACZ,4CAA4C;IAC5C,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;oGACgG;IAChG,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;yFACqF;IACrF,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iEAAiE;IACjE,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,cAAc,CAE5G;AAED,iGAAiG;AACjG,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,cAAc,CAIhE;AAED,0GAA0G;AAC1G,eAAO,MAAM,aAAa,GAAI,MAAM,MAAM,KAAG,MAAM,GAAG,IAAoE,CAAC"}
|