@agenticprimitives/orchestration 0.0.0-alpha.1 → 0.0.0-alpha.3

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 (61) hide show
  1. package/dist/admission.d.ts +87 -0
  2. package/dist/admission.d.ts.map +1 -0
  3. package/dist/admission.js +193 -0
  4. package/dist/admission.js.map +1 -0
  5. package/dist/artifacts.d.ts +137 -0
  6. package/dist/artifacts.d.ts.map +1 -0
  7. package/dist/artifacts.js +232 -0
  8. package/dist/artifacts.js.map +1 -0
  9. package/dist/authority.d.ts +431 -0
  10. package/dist/authority.d.ts.map +1 -0
  11. package/dist/authority.js +2 -0
  12. package/dist/authority.js.map +1 -0
  13. package/dist/durable.d.ts +44 -0
  14. package/dist/durable.d.ts.map +1 -0
  15. package/dist/durable.js +15 -0
  16. package/dist/durable.js.map +1 -0
  17. package/dist/flow-trace.d.ts +105 -0
  18. package/dist/flow-trace.d.ts.map +1 -0
  19. package/dist/flow-trace.js +60 -0
  20. package/dist/flow-trace.js.map +1 -0
  21. package/dist/index.d.ts +20 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +21 -1
  24. package/dist/index.js.map +1 -1
  25. package/dist/input.d.ts +165 -0
  26. package/dist/input.d.ts.map +1 -0
  27. package/dist/input.js +33 -0
  28. package/dist/input.js.map +1 -0
  29. package/dist/loop.d.ts +115 -3
  30. package/dist/loop.d.ts.map +1 -1
  31. package/dist/loop.js +656 -30
  32. package/dist/loop.js.map +1 -1
  33. package/dist/metrics.d.ts +35 -0
  34. package/dist/metrics.d.ts.map +1 -0
  35. package/dist/metrics.js +98 -0
  36. package/dist/metrics.js.map +1 -0
  37. package/dist/planner-wire.d.ts +11 -0
  38. package/dist/planner-wire.d.ts.map +1 -0
  39. package/dist/planner-wire.js +53 -0
  40. package/dist/planner-wire.js.map +1 -0
  41. package/dist/planner.d.ts +33 -0
  42. package/dist/planner.d.ts.map +1 -1
  43. package/dist/planner.js.map +1 -1
  44. package/dist/record.d.ts +161 -0
  45. package/dist/record.d.ts.map +1 -0
  46. package/dist/record.js +72 -0
  47. package/dist/record.js.map +1 -0
  48. package/dist/spans.d.ts +200 -0
  49. package/dist/spans.d.ts.map +1 -0
  50. package/dist/spans.js +522 -0
  51. package/dist/spans.js.map +1 -0
  52. package/dist/tool-invoker.d.ts +7 -0
  53. package/dist/tool-invoker.d.ts.map +1 -1
  54. package/dist/trace-context.d.ts +26 -0
  55. package/dist/trace-context.d.ts.map +1 -0
  56. package/dist/trace-context.js +59 -0
  57. package/dist/trace-context.js.map +1 -0
  58. package/dist/types.d.ts +180 -3
  59. package/dist/types.d.ts.map +1 -1
  60. package/dist/types.js.map +1 -1
  61. package/package.json +4 -1
@@ -0,0 +1,232 @@
1
+ export const ARTIFACT_REF_TYPE = 'ap.artifact-ref.v1';
2
+ /** A result whose canonical JSON is longer than this is offloaded when a store is bound. A deployment setting. */
3
+ export const OFFLOAD_THRESHOLD_CHARS = 8_000;
4
+ /** The most a summary may run to — a shape, never a body. */
5
+ export const SUMMARY_MAX_CHARS = 600;
6
+ /** Top-level result keys retained on a reference: what the record, the spans and the graph cite. */
7
+ export const RETAINED_RESULT_KEYS = ['txHash', 'via', 'count', 'total', 'ok', 'outcome'];
8
+ /** The facts of a result whether it is whole or a reference — what a projection reads. */
9
+ export function resultFactsOf(result) {
10
+ if (isArtifactRef(result))
11
+ return result.retained;
12
+ return result && typeof result === 'object' && !Array.isArray(result) ? result : undefined;
13
+ }
14
+ export const RUN_ARTIFACT_RECORD_PREFIX = 'run.artifact:';
15
+ export const runArtifactRecordKey = (runRef, stepRef) => `${RUN_ARTIFACT_RECORD_PREFIX}${runRef}:${stepRef}`;
16
+ export function isArtifactRef(v) {
17
+ return !!v && typeof v === 'object' && v.$artifact === ARTIFACT_REF_TYPE && typeof v.recordType === 'string';
18
+ }
19
+ /** Canonical JSON: keys sorted, bigints as strings — the same bytes the receipt digests. */
20
+ export const canonicalJson = (v) => JSON.stringify(v, (_k, x) => (typeof x === 'bigint' ? x.toString() : x && typeof x === 'object' && !Array.isArray(x) ? Object.keys(x).sort().reduce((o, k) => { o[k] = x[k]; return o; }, {}) : x)) ?? 'null';
21
+ const sha256 = async (s) => {
22
+ const bytes = new Uint8Array(await crypto.subtle.digest('SHA-256', new TextEncoder().encode(s)));
23
+ return `0x${Array.from(bytes, (b) => b.toString(16).padStart(2, '0')).join('')}`;
24
+ };
25
+ const TITLE_KEYS = ['title', 'name', 'id', 'label', 'handle'];
26
+ const COUNT_KEYS = ['count', 'total', 'length', 'size'];
27
+ const short = (s, n) => (s.length > n ? `${s.slice(0, n - 1)}…` : s);
28
+ /**
29
+ * A DETERMINISTIC summary of a result: its kind and top-level shape, the length of every array, the
30
+ * first three items' title-like field, a count when the result declares one. Bounded, never a body,
31
+ * never a model's words. Two runs over the same result produce the same string.
32
+ */
33
+ export function summarizeResult(result) {
34
+ const parts = [];
35
+ const firstTitles = (items) => items.slice(0, 3).map((it) => {
36
+ if (it && typeof it === 'object') {
37
+ for (const k of TITLE_KEYS) {
38
+ const v = it[k];
39
+ if (typeof v === 'string' && v.trim())
40
+ return short(v.trim(), 60);
41
+ }
42
+ // No title-like key (a query's rows, say): the first short string field names the item better than `{…}`.
43
+ for (const [k, v] of Object.entries(it))
44
+ if (typeof v === 'string' && v.trim() && v.length <= 80 && !/^0x[0-9a-fA-F]{40,}$/.test(v))
45
+ return `${k}=${short(v.trim(), 40)}`;
46
+ return '{…}';
47
+ }
48
+ return typeof it === 'string' ? short(it, 40) : String(it);
49
+ }).join(' · ');
50
+ if (Array.isArray(result)) {
51
+ parts.push(`array of ${result.length}`);
52
+ if (result.length)
53
+ parts.push(`first: ${firstTitles(result)}`);
54
+ }
55
+ else if (result && typeof result === 'object') {
56
+ const o = result;
57
+ const keys = Object.keys(o).sort();
58
+ parts.push(`object{${keys.slice(0, 12).join(',')}${keys.length > 12 ? ',…' : ''}}`);
59
+ for (const k of COUNT_KEYS)
60
+ if (typeof o[k] === 'number') {
61
+ parts.push(`${k}=${o[k]}`);
62
+ break;
63
+ }
64
+ for (const k of keys) {
65
+ const v = o[k];
66
+ if (Array.isArray(v)) {
67
+ parts.push(`${k}[${v.length}]${v.length ? `: ${firstTitles(v)}` : ''}`);
68
+ if (parts.join('; ').length > SUMMARY_MAX_CHARS)
69
+ break;
70
+ }
71
+ }
72
+ }
73
+ else if (typeof result === 'string') {
74
+ parts.push(`string of ${result.length} chars`);
75
+ }
76
+ else {
77
+ parts.push(String(result));
78
+ }
79
+ return short(parts.join('; '), SUMMARY_MAX_CHARS);
80
+ }
81
+ /**
82
+ * The record / checkpoint form of a run's observations: every result whose canonical JSON exceeds the
83
+ * threshold is written to the store and replaced by its reference. The receipts are untouched (their
84
+ * digests already commit to the full output). A write that fails leaves the result whole and is reported.
85
+ */
86
+ export async function offloadObservations(steps, opts) {
87
+ const threshold = opts.threshold ?? OFFLOAD_THRESHOLD_CHARS;
88
+ const offloaded = [];
89
+ const out = [];
90
+ for (const [i, o] of steps.entries()) {
91
+ if (o.result === undefined || isArtifactRef(o.result)) {
92
+ out.push(o);
93
+ continue;
94
+ }
95
+ const json = canonicalJson(o.result);
96
+ if (json.length <= threshold) {
97
+ out.push(o);
98
+ continue;
99
+ }
100
+ const stepRef = o.stepRef ?? o.step.id ?? `s${i}`;
101
+ const recordType = runArtifactRecordKey(opts.runRef, stepRef);
102
+ const digest = await sha256(json);
103
+ const record = { type: 'ap.run-artifact.v1', runRef: opts.runRef, stepRef, toolId: o.step.toolId, digest, bytes: json.length, at: opts.now ?? Date.now(), result: o.result };
104
+ const wrote = await opts.store.put(record, opts.agent).catch((e) => ({ ok: false, error: e instanceof Error ? e.message : String(e) }));
105
+ if (!wrote.ok) {
106
+ offloaded.push({ stepRef, toolId: o.step.toolId, bytes: json.length, recordType, ok: false, error: wrote.error });
107
+ out.push(o);
108
+ continue;
109
+ }
110
+ const retained = {};
111
+ if (o.result && typeof o.result === 'object' && !Array.isArray(o.result))
112
+ for (const k of RETAINED_RESULT_KEYS) {
113
+ const v = o.result[k];
114
+ if (v !== undefined && canonicalJson(v).length <= 400)
115
+ retained[k] = v;
116
+ }
117
+ const ref = { $artifact: ARTIFACT_REF_TYPE, agent: opts.agent.toLowerCase(), recordType, digest, bytes: json.length, toolId: o.step.toolId, summary: summarizeResult(o.result), ...(Object.keys(retained).length ? { retained } : {}) };
118
+ offloaded.push({ stepRef, toolId: o.step.toolId, bytes: json.length, recordType, ok: true });
119
+ out.push({ ...o, result: ref });
120
+ }
121
+ return { steps: out, offloaded };
122
+ }
123
+ /** The record form of a whole RunResult (steps offloaded; everything else as it was). */
124
+ export async function offloadRunResult(result, opts) {
125
+ const { steps, offloaded } = await offloadObservations(result.steps, opts);
126
+ return { result: { ...result, steps }, offloaded };
127
+ }
128
+ /** The step references a plan's remaining steps reach through `$ref` (`{ $ref: 'name.path' }` — the name is
129
+ * the producing step's `ref` or `id`). */
130
+ export function refsReachedBy(steps) {
131
+ const names = new Set();
132
+ const walk = (v) => {
133
+ if (!v || typeof v !== 'object')
134
+ return;
135
+ const r = v.$ref;
136
+ if (typeof r === 'string') {
137
+ names.add(r.split('.')[0]);
138
+ return;
139
+ }
140
+ for (const x of Object.values(v))
141
+ walk(x);
142
+ };
143
+ for (const s of steps)
144
+ walk(s.args);
145
+ return names;
146
+ }
147
+ /**
148
+ * The inverse, on a resume: a completed step whose result is a reference gets its body back from the store
149
+ * ONLY when a remaining step's `$ref` reaches it (by the step's `ref`, `id` or stepRef). A body nobody will
150
+ * read stays a reference. A missing artifact is an error the caller surfaces — a resume that guessed a
151
+ * result would be a resume that lied.
152
+ */
153
+ export async function rehydrateObservations(completed, plan, store) {
154
+ const reached = refsReachedBy(plan.steps);
155
+ const nameOf = new Map();
156
+ for (const [i, s] of plan.steps.entries()) {
157
+ const ref = `s${i}`;
158
+ if (s.ref)
159
+ nameOf.set(s.ref, ref);
160
+ if (s.id)
161
+ nameOf.set(s.id, s.id);
162
+ }
163
+ const rehydrated = [];
164
+ const out = [];
165
+ for (const c of completed) {
166
+ if (!isArtifactRef(c.result)) {
167
+ out.push(c);
168
+ continue;
169
+ }
170
+ const wanted = [...reached].some((n) => n === c.stepRef || nameOf.get(n) === c.stepRef || plan.steps.some((s) => (s.ref === n || s.id === n) && (s.id === c.stepRef || s.ref === c.stepRef)));
171
+ if (!wanted) {
172
+ out.push(c);
173
+ continue;
174
+ }
175
+ const rec = await store.get(c.result);
176
+ if (!rec)
177
+ throw new Error(`artifact ${c.result.recordType} is not in the vault — the resume cannot restore step ${c.stepRef}'s result`);
178
+ rehydrated.push(c.stepRef);
179
+ out.push({ ...c, result: rec.result });
180
+ }
181
+ return { completed: out, rehydrated };
182
+ }
183
+ /**
184
+ * Spec 391 W2 — what a RE-PLAN sees of prior observations: a body over the threshold becomes its summary (a
185
+ * reference keeps its own). A planner deciding what comes next needs what a step was and how big, not 40 KB
186
+ * of it in the prompt.
187
+ */
188
+ export function compactObservations(observations, threshold = OFFLOAD_THRESHOLD_CHARS) {
189
+ return observations.map((o) => {
190
+ if (o.result === undefined)
191
+ return o;
192
+ if (isArtifactRef(o.result))
193
+ return { ...o, result: `[offloaded: ${o.result.summary}]` };
194
+ const json = canonicalJson(o.result);
195
+ return json.length <= threshold ? o : { ...o, result: `[summary: ${summarizeResult(o.result)}]` };
196
+ });
197
+ }
198
+ /**
199
+ * The composer's evidence, FITTED to a budget instead of sliced: successful observations in order; a
200
+ * reference contributes its summary; a body that fits is kept whole; a body that would push the whole
201
+ * past the cap is replaced by its summary and recorded as dropped. The first item is always kept whole
202
+ * when it fits alone — an answer with no evidence is not an answer.
203
+ */
204
+ export function fitEvidence(observations, cap) {
205
+ const ok = observations.filter((o) => o.ok);
206
+ const whole = ok.map((o) => ({ o, json: isArtifactRef(o.result) ? null : canonicalJson(o.result ?? null) }));
207
+ const of = whole.reduce((n, w) => n + (w.json !== null ? w.json.length : w.o.result.summary.length), 0);
208
+ const items = [];
209
+ const dropped = [];
210
+ let chars = 0;
211
+ for (const { o, json } of whole) {
212
+ const tool = o.step.toolId;
213
+ if (json === null) {
214
+ const ref = o.result;
215
+ const s = `[offloaded: ${ref.summary}]`;
216
+ items.push({ tool, result: s, summarized: true });
217
+ chars += s.length;
218
+ continue;
219
+ }
220
+ if (chars + json.length <= cap) {
221
+ items.push({ tool, result: o.result });
222
+ chars += json.length;
223
+ continue;
224
+ }
225
+ const s = `[summary: ${summarizeResult(o.result)}]`;
226
+ items.push({ tool, result: s, summarized: true });
227
+ chars += s.length;
228
+ dropped.push({ tool, ...(o.stepRef ? { stepRef: o.stepRef } : {}), bytes: json.length });
229
+ }
230
+ return { items, chars, of, dropped };
231
+ }
232
+ //# sourceMappingURL=artifacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../src/artifacts.ts"],"names":[],"mappings":"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"}