@sensigo/realm 0.1.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/README.md +150 -0
- package/dist/adapters/adapter-utils.d.ts +14 -0
- package/dist/adapters/adapter-utils.d.ts.map +1 -0
- package/dist/adapters/adapter-utils.js +18 -0
- package/dist/adapters/adapter-utils.js.map +1 -0
- package/dist/adapters/airtable-adapter.d.ts +51 -0
- package/dist/adapters/airtable-adapter.d.ts.map +1 -0
- package/dist/adapters/airtable-adapter.js +425 -0
- package/dist/adapters/airtable-adapter.js.map +1 -0
- package/dist/adapters/file-adapter.d.ts +14 -0
- package/dist/adapters/file-adapter.d.ts.map +1 -0
- package/dist/adapters/file-adapter.js +89 -0
- package/dist/adapters/file-adapter.js.map +1 -0
- package/dist/adapters/github-adapter.d.ts +40 -0
- package/dist/adapters/github-adapter.d.ts.map +1 -0
- package/dist/adapters/github-adapter.js +286 -0
- package/dist/adapters/github-adapter.js.map +1 -0
- package/dist/adapters/gorgias-adapter.d.ts +40 -0
- package/dist/adapters/gorgias-adapter.d.ts.map +1 -0
- package/dist/adapters/gorgias-adapter.js +300 -0
- package/dist/adapters/gorgias-adapter.js.map +1 -0
- package/dist/adapters/http-adapter.d.ts +28 -0
- package/dist/adapters/http-adapter.d.ts.map +1 -0
- package/dist/adapters/http-adapter.js +97 -0
- package/dist/adapters/http-adapter.js.map +1 -0
- package/dist/adapters/mock-adapter.d.ts +16 -0
- package/dist/adapters/mock-adapter.d.ts.map +1 -0
- package/dist/adapters/mock-adapter.js +61 -0
- package/dist/adapters/mock-adapter.js.map +1 -0
- package/dist/adapters/notion-adapter.d.ts +54 -0
- package/dist/adapters/notion-adapter.d.ts.map +1 -0
- package/dist/adapters/notion-adapter.js +751 -0
- package/dist/adapters/notion-adapter.js.map +1 -0
- package/dist/adapters/parcelpanel-adapter.d.ts +60 -0
- package/dist/adapters/parcelpanel-adapter.d.ts.map +1 -0
- package/dist/adapters/parcelpanel-adapter.js +251 -0
- package/dist/adapters/parcelpanel-adapter.js.map +1 -0
- package/dist/adapters/rate-limiter.d.ts +26 -0
- package/dist/adapters/rate-limiter.d.ts.map +1 -0
- package/dist/adapters/rate-limiter.js +3 -0
- package/dist/adapters/rate-limiter.js.map +1 -0
- package/dist/adapters/shopify-adapter.d.ts +92 -0
- package/dist/adapters/shopify-adapter.d.ts.map +1 -0
- package/dist/adapters/shopify-adapter.js +415 -0
- package/dist/adapters/shopify-adapter.js.map +1 -0
- package/dist/adapters/slack-adapter.d.ts +18 -0
- package/dist/adapters/slack-adapter.d.ts.map +1 -0
- package/dist/adapters/slack-adapter.js +81 -0
- package/dist/adapters/slack-adapter.js.map +1 -0
- package/dist/adapters/token-bucket.d.ts +27 -0
- package/dist/adapters/token-bucket.d.ts.map +1 -0
- package/dist/adapters/token-bucket.js +109 -0
- package/dist/adapters/token-bucket.js.map +1 -0
- package/dist/config/secrets.d.ts +15 -0
- package/dist/config/secrets.d.ts.map +1 -0
- package/dist/config/secrets.js +33 -0
- package/dist/config/secrets.js.map +1 -0
- package/dist/engine/eligibility.d.ts +50 -0
- package/dist/engine/eligibility.d.ts.map +1 -0
- package/dist/engine/eligibility.js +267 -0
- package/dist/engine/eligibility.js.map +1 -0
- package/dist/engine/error-resolution.d.ts +20 -0
- package/dist/engine/error-resolution.d.ts.map +1 -0
- package/dist/engine/error-resolution.js +32 -0
- package/dist/engine/error-resolution.js.map +1 -0
- package/dist/engine/execution-loop.d.ts +101 -0
- package/dist/engine/execution-loop.d.ts.map +1 -0
- package/dist/engine/execution-loop.js +1156 -0
- package/dist/engine/execution-loop.js.map +1 -0
- package/dist/engine/lifecycle.d.ts +14 -0
- package/dist/engine/lifecycle.d.ts.map +1 -0
- package/dist/engine/lifecycle.js +17 -0
- package/dist/engine/lifecycle.js.map +1 -0
- package/dist/engine/precondition.d.ts +30 -0
- package/dist/engine/precondition.d.ts.map +1 -0
- package/dist/engine/precondition.js +125 -0
- package/dist/engine/precondition.js.map +1 -0
- package/dist/engine/prompt-template.d.ts +25 -0
- package/dist/engine/prompt-template.d.ts.map +1 -0
- package/dist/engine/prompt-template.js +66 -0
- package/dist/engine/prompt-template.js.map +1 -0
- package/dist/engine/render-template.d.ts +52 -0
- package/dist/engine/render-template.d.ts.map +1 -0
- package/dist/engine/render-template.js +548 -0
- package/dist/engine/render-template.js.map +1 -0
- package/dist/engine/state-guard.d.ts +15 -0
- package/dist/engine/state-guard.d.ts.map +1 -0
- package/dist/engine/state-guard.js +40 -0
- package/dist/engine/state-guard.js.map +1 -0
- package/dist/engine/trace-normalizer.d.ts +36 -0
- package/dist/engine/trace-normalizer.d.ts.map +1 -0
- package/dist/engine/trace-normalizer.js +146 -0
- package/dist/engine/trace-normalizer.js.map +1 -0
- package/dist/engine/trace-policy.d.ts +53 -0
- package/dist/engine/trace-policy.d.ts.map +1 -0
- package/dist/engine/trace-policy.js +35 -0
- package/dist/engine/trace-policy.js.map +1 -0
- package/dist/engine/workflow-context-loader.d.ts +9 -0
- package/dist/engine/workflow-context-loader.d.ts.map +1 -0
- package/dist/engine/workflow-context-loader.js +41 -0
- package/dist/engine/workflow-context-loader.js.map +1 -0
- package/dist/evidence/snapshot.d.ts +38 -0
- package/dist/evidence/snapshot.d.ts.map +1 -0
- package/dist/evidence/snapshot.js +53 -0
- package/dist/evidence/snapshot.js.map +1 -0
- package/dist/extensions/default-registry.d.ts +19 -0
- package/dist/extensions/default-registry.d.ts.map +1 -0
- package/dist/extensions/default-registry.js +31 -0
- package/dist/extensions/default-registry.js.map +1 -0
- package/dist/extensions/processor.d.ts +13 -0
- package/dist/extensions/processor.d.ts.map +1 -0
- package/dist/extensions/processor.js +3 -0
- package/dist/extensions/processor.js.map +1 -0
- package/dist/extensions/registry.d.ts +25 -0
- package/dist/extensions/registry.d.ts.map +1 -0
- package/dist/extensions/registry.js +43 -0
- package/dist/extensions/registry.js.map +1 -0
- package/dist/extensions/service-adapter.d.ts +35 -0
- package/dist/extensions/service-adapter.d.ts.map +1 -0
- package/dist/extensions/service-adapter.js +3 -0
- package/dist/extensions/service-adapter.js.map +1 -0
- package/dist/extensions/step-handler.d.ts +28 -0
- package/dist/extensions/step-handler.d.ts.map +1 -0
- package/dist/extensions/step-handler.js +3 -0
- package/dist/extensions/step-handler.js.map +1 -0
- package/dist/handlers/primitives/compare-strings.d.ts +13 -0
- package/dist/handlers/primitives/compare-strings.d.ts.map +1 -0
- package/dist/handlers/primitives/compare-strings.js +28 -0
- package/dist/handlers/primitives/compare-strings.js.map +1 -0
- package/dist/handlers/primitives/count-results.d.ts +21 -0
- package/dist/handlers/primitives/count-results.d.ts.map +1 -0
- package/dist/handlers/primitives/count-results.js +23 -0
- package/dist/handlers/primitives/count-results.js.map +1 -0
- package/dist/handlers/primitives/partition-by-substring.d.ts +18 -0
- package/dist/handlers/primitives/partition-by-substring.d.ts.map +1 -0
- package/dist/handlers/primitives/partition-by-substring.js +28 -0
- package/dist/handlers/primitives/partition-by-substring.js.map +1 -0
- package/dist/handlers/primitives/resolve-resource.d.ts +13 -0
- package/dist/handlers/primitives/resolve-resource.d.ts.map +1 -0
- package/dist/handlers/primitives/resolve-resource.js +21 -0
- package/dist/handlers/primitives/resolve-resource.js.map +1 -0
- package/dist/handlers/primitives/walk-field.d.ts +11 -0
- package/dist/handlers/primitives/walk-field.d.ts.map +1 -0
- package/dist/handlers/primitives/walk-field.js +31 -0
- package/dist/handlers/primitives/walk-field.js.map +1 -0
- package/dist/handlers/validate-field-match.d.ts +11 -0
- package/dist/handlers/validate-field-match.d.ts.map +1 -0
- package/dist/handlers/validate-field-match.js +39 -0
- package/dist/handlers/validate-field-match.js.map +1 -0
- package/dist/handlers/validate-verbatim-quotes.d.ts +11 -0
- package/dist/handlers/validate-verbatim-quotes.d.ts.map +1 -0
- package/dist/handlers/validate-verbatim-quotes.js +37 -0
- package/dist/handlers/validate-verbatim-quotes.js.map +1 -0
- package/dist/index.d.ts +57 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -0
- package/dist/pipeline/processing-pipeline.d.ts +24 -0
- package/dist/pipeline/processing-pipeline.d.ts.map +1 -0
- package/dist/pipeline/processing-pipeline.js +53 -0
- package/dist/pipeline/processing-pipeline.js.map +1 -0
- package/dist/processors/compute-hash.d.ts +4 -0
- package/dist/processors/compute-hash.d.ts.map +1 -0
- package/dist/processors/compute-hash.js +14 -0
- package/dist/processors/compute-hash.js.map +1 -0
- package/dist/processors/normalize-text.d.ts +8 -0
- package/dist/processors/normalize-text.d.ts.map +1 -0
- package/dist/processors/normalize-text.js +47 -0
- package/dist/processors/normalize-text.js.map +1 -0
- package/dist/store/json-file-store.d.ts +24 -0
- package/dist/store/json-file-store.d.ts.map +1 -0
- package/dist/store/json-file-store.js +210 -0
- package/dist/store/json-file-store.js.map +1 -0
- package/dist/store/store-interface.d.ts +33 -0
- package/dist/store/store-interface.d.ts.map +1 -0
- package/dist/store/store-interface.js +2 -0
- package/dist/store/store-interface.js.map +1 -0
- package/dist/store/trace-buffer-store.d.ts +55 -0
- package/dist/store/trace-buffer-store.d.ts.map +1 -0
- package/dist/store/trace-buffer-store.js +113 -0
- package/dist/store/trace-buffer-store.js.map +1 -0
- package/dist/types/mcp-types.d.ts +17 -0
- package/dist/types/mcp-types.d.ts.map +1 -0
- package/dist/types/mcp-types.js +5 -0
- package/dist/types/mcp-types.js.map +1 -0
- package/dist/types/response-envelope.d.ts +96 -0
- package/dist/types/response-envelope.d.ts.map +1 -0
- package/dist/types/response-envelope.js +2 -0
- package/dist/types/response-envelope.js.map +1 -0
- package/dist/types/run-record.d.ts +169 -0
- package/dist/types/run-record.d.ts.map +1 -0
- package/dist/types/run-record.js +2 -0
- package/dist/types/run-record.js.map +1 -0
- package/dist/types/workflow-definition.d.ts +292 -0
- package/dist/types/workflow-definition.d.ts.map +1 -0
- package/dist/types/workflow-definition.js +2 -0
- package/dist/types/workflow-definition.js.map +1 -0
- package/dist/types/workflow-error.d.ts +26 -0
- package/dist/types/workflow-error.d.ts.map +1 -0
- package/dist/types/workflow-error.js +28 -0
- package/dist/types/workflow-error.js.map +1 -0
- package/dist/utils/schema-skeleton.d.ts +11 -0
- package/dist/utils/schema-skeleton.d.ts.map +1 -0
- package/dist/utils/schema-skeleton.js +40 -0
- package/dist/utils/schema-skeleton.js.map +1 -0
- package/dist/validation/input-schema.d.ts +26 -0
- package/dist/validation/input-schema.d.ts.map +1 -0
- package/dist/validation/input-schema.js +67 -0
- package/dist/validation/input-schema.js.map +1 -0
- package/dist/workflow/registrar.d.ts +20 -0
- package/dist/workflow/registrar.d.ts.map +1 -0
- package/dist/workflow/registrar.js +61 -0
- package/dist/workflow/registrar.js.map +1 -0
- package/dist/workflow/template-resolver.d.ts +25 -0
- package/dist/workflow/template-resolver.d.ts.map +1 -0
- package/dist/workflow/template-resolver.js +112 -0
- package/dist/workflow/template-resolver.js.map +1 -0
- package/dist/workflow/yaml-loader.d.ts +15 -0
- package/dist/workflow/yaml-loader.d.ts.map +1 -0
- package/dist/workflow/yaml-loader.js +408 -0
- package/dist/workflow/yaml-loader.js.map +1 -0
- package/package.json +61 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { WorkflowError } from '../types/workflow-error.js';
|
|
2
|
+
export const BUFFER_LIMIT_COUNT = 200;
|
|
3
|
+
export const BUFFER_LIMIT_BYTES = 100 * 1024; // 100 KB
|
|
4
|
+
export const FINAL_LIMIT_ENTRIES = 100;
|
|
5
|
+
export const FINAL_LIMIT_BYTES = 50 * 1024; // 50 KB (must match MAX_BYTES in trace-normalizer.ts)
|
|
6
|
+
const MAX_EVENT_LENGTH = 100;
|
|
7
|
+
const RESERVED_PREFIX = 'trace.';
|
|
8
|
+
const MAX_DATA_KEYS = 20;
|
|
9
|
+
const MAX_STRING_VALUE = 500;
|
|
10
|
+
/**
|
|
11
|
+
* Per-entry normalization run at append time (not at finalization).
|
|
12
|
+
* Mirrors the normalization in normalizeTrace for the parts that don't need seq or byte-budget context.
|
|
13
|
+
* Returns null if the entry should be dropped (reserved prefix).
|
|
14
|
+
*/
|
|
15
|
+
export function normalizeEntryForBuffer(entry) {
|
|
16
|
+
// Normalize event: trim, replace empty with 'unknown_event', cap to MAX_EVENT_LENGTH.
|
|
17
|
+
let event = (entry.event ?? '').trim();
|
|
18
|
+
if (event.length === 0)
|
|
19
|
+
event = 'unknown_event';
|
|
20
|
+
if (event.length > MAX_EVENT_LENGTH)
|
|
21
|
+
event = event.slice(0, MAX_EVENT_LENGTH);
|
|
22
|
+
// Drop if event starts with reserved prefix.
|
|
23
|
+
if (event.startsWith(RESERVED_PREFIX))
|
|
24
|
+
return null;
|
|
25
|
+
// Normalize data: keep first 20 keys, cap string values to 500 chars, drop non-primitive values.
|
|
26
|
+
let data;
|
|
27
|
+
if (entry.data !== undefined) {
|
|
28
|
+
const keys = Object.keys(entry.data).slice(0, MAX_DATA_KEYS);
|
|
29
|
+
const normalized = {};
|
|
30
|
+
for (const key of keys) {
|
|
31
|
+
const val = entry.data[key];
|
|
32
|
+
if (val === null || typeof val === 'boolean' || typeof val === 'number') {
|
|
33
|
+
normalized[key] = val;
|
|
34
|
+
}
|
|
35
|
+
else if (typeof val === 'string') {
|
|
36
|
+
normalized[key] = val.length > MAX_STRING_VALUE ? val.slice(0, MAX_STRING_VALUE) : val;
|
|
37
|
+
}
|
|
38
|
+
// Drop non-primitive values (objects, arrays, undefined).
|
|
39
|
+
}
|
|
40
|
+
data = Object.keys(normalized).length > 0 ? normalized : undefined;
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
event,
|
|
44
|
+
...(entry.timestamp !== undefined ? { timestamp: entry.timestamp } : {}),
|
|
45
|
+
...(data !== undefined ? { data } : {}),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* In-memory TraceBufferStore for use in tests and non-persistent environments.
|
|
50
|
+
* Entries are lost on process restart (no file I/O).
|
|
51
|
+
*/
|
|
52
|
+
export class InMemoryTraceBufferStore {
|
|
53
|
+
buffers = new Map();
|
|
54
|
+
key(runId, stepId) {
|
|
55
|
+
return `${runId}:${stepId}`;
|
|
56
|
+
}
|
|
57
|
+
async append(runId, stepId, entries) {
|
|
58
|
+
const k = this.key(runId, stepId);
|
|
59
|
+
const existing = this.buffers.get(k) ?? [];
|
|
60
|
+
if (entries.length === 0) {
|
|
61
|
+
const bytes = Buffer.byteLength(JSON.stringify(existing));
|
|
62
|
+
return {
|
|
63
|
+
buffer_count: existing.length,
|
|
64
|
+
buffer_bytes: bytes,
|
|
65
|
+
limit_count: BUFFER_LIMIT_COUNT,
|
|
66
|
+
limit_bytes: BUFFER_LIMIT_BYTES,
|
|
67
|
+
final_limit_entries: FINAL_LIMIT_ENTRIES,
|
|
68
|
+
final_limit_bytes: FINAL_LIMIT_BYTES,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
const ts = Date.now();
|
|
72
|
+
const normalized = entries
|
|
73
|
+
.map((e) => normalizeEntryForBuffer(e))
|
|
74
|
+
.filter((e) => e !== null)
|
|
75
|
+
.map((e) => ({ ...e, _internalTs: ts }));
|
|
76
|
+
const proposed = [...existing, ...normalized];
|
|
77
|
+
const proposedBytes = Buffer.byteLength(JSON.stringify(proposed));
|
|
78
|
+
if (proposed.length > BUFFER_LIMIT_COUNT || proposedBytes > BUFFER_LIMIT_BYTES) {
|
|
79
|
+
const existingBytes = Buffer.byteLength(JSON.stringify(existing));
|
|
80
|
+
throw new WorkflowError('Trace buffer full for step', {
|
|
81
|
+
code: 'BUFFER_FULL',
|
|
82
|
+
category: 'ENGINE',
|
|
83
|
+
agentAction: 'provide_input',
|
|
84
|
+
retryable: false,
|
|
85
|
+
details: { buffer_count: existing.length, buffer_bytes: existingBytes },
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
this.buffers.set(k, proposed);
|
|
89
|
+
const bytes = Buffer.byteLength(JSON.stringify(proposed));
|
|
90
|
+
return {
|
|
91
|
+
buffer_count: proposed.length,
|
|
92
|
+
buffer_bytes: bytes,
|
|
93
|
+
limit_count: BUFFER_LIMIT_COUNT,
|
|
94
|
+
limit_bytes: BUFFER_LIMIT_BYTES,
|
|
95
|
+
final_limit_entries: FINAL_LIMIT_ENTRIES,
|
|
96
|
+
final_limit_bytes: FINAL_LIMIT_BYTES,
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
async read(runId, stepId) {
|
|
100
|
+
return this.buffers.get(this.key(runId, stepId)) ?? [];
|
|
101
|
+
}
|
|
102
|
+
async delete(runId, stepId) {
|
|
103
|
+
this.buffers.delete(this.key(runId, stepId));
|
|
104
|
+
}
|
|
105
|
+
async deleteAllForRun(runId) {
|
|
106
|
+
for (const key of [...this.buffers.keys()]) {
|
|
107
|
+
if (key.startsWith(`${runId}:`)) {
|
|
108
|
+
this.buffers.delete(key);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=trace-buffer-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-buffer-store.js","sourceRoot":"","sources":["../../src/store/trace-buffer-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface ToolCallRecord {
|
|
2
|
+
server_id: string;
|
|
3
|
+
tool: string;
|
|
4
|
+
args: Record<string, unknown>;
|
|
5
|
+
result: string | null;
|
|
6
|
+
duration_ms: number;
|
|
7
|
+
error?: string;
|
|
8
|
+
}
|
|
9
|
+
export interface McpServerConfig {
|
|
10
|
+
id: string;
|
|
11
|
+
transport: 'stdio';
|
|
12
|
+
command?: string;
|
|
13
|
+
args?: string[];
|
|
14
|
+
/** Values support "${VAR}" expansion from process.env at connect time */
|
|
15
|
+
env?: Record<string, string>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=mcp-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-types.d.ts","sourceRoot":"","sources":["../../src/types/mcp-types.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// ToolCallRecord and McpServerConfig live in core because they are referenced by core types
|
|
2
|
+
// (EvidenceSnapshot, ExecuteChainOptions, WorkflowDefinition). Defining them in cli would
|
|
3
|
+
// create a circular import: core → cli → core.
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=mcp-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-types.js","sourceRoot":"","sources":["../../src/types/mcp-types.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,0FAA0F;AAC1F,+CAA+C"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import type { EvidenceSnapshot } from './run-record.js';
|
|
2
|
+
import type { AgentAction, ErrorCode } from './workflow-error.js';
|
|
3
|
+
export interface NextAction {
|
|
4
|
+
instruction: {
|
|
5
|
+
tool: string;
|
|
6
|
+
params: Record<string, unknown>;
|
|
7
|
+
/**
|
|
8
|
+
* Ready-to-use flat argument object for calling the tool.
|
|
9
|
+
* Agent-supplied params appear as placeholder strings (e.g. "<YOUR_PARAMS>", "<approve|reject>").
|
|
10
|
+
* Copy this object, replace the placeholder(s), and call the tool.
|
|
11
|
+
*/
|
|
12
|
+
call_with: Record<string, unknown>;
|
|
13
|
+
} | null;
|
|
14
|
+
human_readable: string;
|
|
15
|
+
/** Current state orientation — describes what state the run is in and what just happened. */
|
|
16
|
+
orientation: string;
|
|
17
|
+
expected_timeout?: string;
|
|
18
|
+
/** The step's declared input schema — use this to structure the params argument of your execute_step call. */
|
|
19
|
+
input_schema?: Record<string, unknown>;
|
|
20
|
+
/** Template-resolved step prompt, delivered to the agent at step entry. */
|
|
21
|
+
prompt?: string;
|
|
22
|
+
}
|
|
23
|
+
export type RunStatus = 'ok' | 'error' | 'blocked' | 'confirm_required';
|
|
24
|
+
export interface BlockedReason {
|
|
25
|
+
/** Step names currently eligible for execution. */
|
|
26
|
+
eligible_steps: string[];
|
|
27
|
+
suggestion?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface GateInfo {
|
|
30
|
+
gate_id: string;
|
|
31
|
+
step_name: string;
|
|
32
|
+
preview: Record<string, unknown>;
|
|
33
|
+
choices: string[];
|
|
34
|
+
/** Template-resolved display content for this gate step — present to the human verbatim before asking for their choice. */
|
|
35
|
+
display?: string;
|
|
36
|
+
/** Agent-facing instructions for this gate step — how the agent should present the gate to the human. */
|
|
37
|
+
agent_hint?: string;
|
|
38
|
+
/** Structured response specification — the choices the human may select. */
|
|
39
|
+
response_spec?: {
|
|
40
|
+
choices: string[];
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
export interface ResponseEnvelope {
|
|
44
|
+
command: string;
|
|
45
|
+
run_id: string;
|
|
46
|
+
/** Integer version of the run record at time of response. For observability only — not required as input to any tool. */
|
|
47
|
+
run_version: number;
|
|
48
|
+
/**
|
|
49
|
+
* Chain progress status.
|
|
50
|
+
* - 'ok': the chain made forward progress; follow next_actions for what to do next.
|
|
51
|
+
* Does NOT imply the original requested step succeeded — a recovery path also returns 'ok' with a warning.
|
|
52
|
+
* - 'error': unrecoverable failure; agent_action tells you how to respond.
|
|
53
|
+
* - 'blocked': wrong step for current state; next_actions redirects.
|
|
54
|
+
* - 'confirm_required': a human gate is open; gate carries the display content.
|
|
55
|
+
*/
|
|
56
|
+
status: RunStatus;
|
|
57
|
+
data: Record<string, unknown>;
|
|
58
|
+
/** Audit trail of step executions in this response. For debugging and CLI inspection only. */
|
|
59
|
+
evidence: EvidenceSnapshot[];
|
|
60
|
+
warnings: string[];
|
|
61
|
+
errors: string[];
|
|
62
|
+
/**
|
|
63
|
+
* The canonical error code from the WorkflowError that produced this envelope.
|
|
64
|
+
* Only present when status === 'error'.
|
|
65
|
+
*/
|
|
66
|
+
error_code?: ErrorCode;
|
|
67
|
+
/**
|
|
68
|
+
* Additional structured context from the WorkflowError. Only present when
|
|
69
|
+
* error_code is set and the error carries non-empty details.
|
|
70
|
+
*/
|
|
71
|
+
error_details?: Record<string, unknown>;
|
|
72
|
+
agent_action?: AgentAction;
|
|
73
|
+
/**
|
|
74
|
+
* When present and agent_action is 'wait_and_proceed', the number of seconds
|
|
75
|
+
* the consumer should wait before following next_actions. Not set for other
|
|
76
|
+
* agent_action values.
|
|
77
|
+
*/
|
|
78
|
+
retry_after?: number;
|
|
79
|
+
/** Current state orientation. Always populated — describes what just happened and what state the run is in. */
|
|
80
|
+
context_hint: string;
|
|
81
|
+
/** Steps available for execution. Empty array means terminal or blocked — check status and run_phase. */
|
|
82
|
+
next_actions: NextAction[];
|
|
83
|
+
blocked_reason?: BlockedReason;
|
|
84
|
+
gate?: GateInfo;
|
|
85
|
+
/**
|
|
86
|
+
* Names and run_phase values of auto steps that ran silently as part of an executeChain call.
|
|
87
|
+
* Only present when at least one auto step was chained. Useful for debugging and orientation
|
|
88
|
+
* after start_run or after an agent step that triggers subsequent auto steps.
|
|
89
|
+
*/
|
|
90
|
+
chained_auto_steps?: Array<{
|
|
91
|
+
step: string;
|
|
92
|
+
run_phase: string;
|
|
93
|
+
branched_via?: string;
|
|
94
|
+
}>;
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=response-envelope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-envelope.d.ts","sourceRoot":"","sources":["../../src/types/response-envelope.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC;;;;WAIG;QACH,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,GAAG,IAAI,CAAC;IACT,cAAc,EAAE,MAAM,CAAC;IACvB,6FAA6F;IAC7F,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,8GAA8G;IAC9G,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,OAAO,GAAG,SAAS,GAAG,kBAAkB,CAAC;AAExE,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,2HAA2H;IAC3H,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yGAAyG;IACzG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,aAAa,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CACvC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,yHAAyH;IACzH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,8FAA8F;IAC9F,QAAQ,EAAE,gBAAgB,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+GAA+G;IAC/G,YAAY,EAAE,MAAM,CAAC;IACrB,yGAAyG;IACzG,YAAY,EAAE,UAAU,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACxF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response-envelope.js","sourceRoot":"","sources":["../../src/types/response-envelope.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import type { ToolCallRecord } from './mcp-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* A single trace entry submitted by the agent. Submitted as-is; the engine
|
|
4
|
+
* canonicalizes and assigns seq before persisting.
|
|
5
|
+
*/
|
|
6
|
+
export interface AgentTraceEntry {
|
|
7
|
+
event: string;
|
|
8
|
+
timestamp?: string | undefined;
|
|
9
|
+
data?: Record<string, string | number | boolean | null> | undefined;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* A single stored trace entry after canonicalization.
|
|
13
|
+
* seq is engine-assigned: 1-based, monotonically increasing in stored order.
|
|
14
|
+
*/
|
|
15
|
+
export interface TraceEntry {
|
|
16
|
+
seq: number;
|
|
17
|
+
event: string;
|
|
18
|
+
timestamp?: string;
|
|
19
|
+
data?: Record<string, string | number | boolean | null>;
|
|
20
|
+
}
|
|
21
|
+
/** Discard and truncation accounting produced by the trace normalizer. */
|
|
22
|
+
export interface TraceNormalizationSummary {
|
|
23
|
+
submitted_entries: number;
|
|
24
|
+
stored_entries: number;
|
|
25
|
+
discarded_entries: number;
|
|
26
|
+
discarded_reserved_event_entries: number;
|
|
27
|
+
discarded_overflow_entries: number;
|
|
28
|
+
truncated: boolean;
|
|
29
|
+
truncation_reason?: 'count_limit' | 'byte_limit';
|
|
30
|
+
/** Whether trace_schema validation was applied to the canonical entries. */
|
|
31
|
+
schema_applied?: boolean;
|
|
32
|
+
/** Validation mode that was applied ('warn' or 'enforce'). Present when schema_applied is true. */
|
|
33
|
+
validation_mode?: 'warn' | 'enforce';
|
|
34
|
+
/** Number of Ajv validation errors found. Zero means schema-conformant. Present when schema_applied is true. */
|
|
35
|
+
validation_errors?: number;
|
|
36
|
+
}
|
|
37
|
+
/** Diagnostic metadata captured during step execution. Written once; read by inspect. */
|
|
38
|
+
export interface StepDiagnostics {
|
|
39
|
+
/** Rough token count estimate: Math.ceil(JSON.stringify(input).length / 4) */
|
|
40
|
+
input_token_estimate: number;
|
|
41
|
+
/** Ordered list of precondition evaluations for this step. Empty array if no preconditions. */
|
|
42
|
+
precondition_trace: Array<{
|
|
43
|
+
expression: string;
|
|
44
|
+
passed: boolean;
|
|
45
|
+
resolved_value: unknown;
|
|
46
|
+
}>;
|
|
47
|
+
}
|
|
48
|
+
export interface EvidenceSnapshot {
|
|
49
|
+
step_id: string;
|
|
50
|
+
started_at: string;
|
|
51
|
+
completed_at: string;
|
|
52
|
+
duration_ms: number;
|
|
53
|
+
input_summary: Record<string, unknown>;
|
|
54
|
+
output_summary: Record<string, unknown>;
|
|
55
|
+
status: 'success' | 'error' | 'skipped';
|
|
56
|
+
error?: string;
|
|
57
|
+
evidence_hash: string;
|
|
58
|
+
attempt?: number;
|
|
59
|
+
/** Distinguishes computation records from human decision records. Absent on pre-existing entries. */
|
|
60
|
+
kind?: 'execution' | 'gate_response';
|
|
61
|
+
/**
|
|
62
|
+
* Verbatim message presented to the human reviewer when they made this gate choice.
|
|
63
|
+
* Present only on gate_response evidence entries when gate.message was configured.
|
|
64
|
+
* This is an evidence integrity field: it records exactly what the human read.
|
|
65
|
+
*/
|
|
66
|
+
gate_message?: string;
|
|
67
|
+
/** Diagnostic metadata. Present on snapshots captured after Week 7. */
|
|
68
|
+
diagnostics?: StepDiagnostics;
|
|
69
|
+
/** Name of the agent profile active at this step, if any. */
|
|
70
|
+
agent_profile?: string;
|
|
71
|
+
/** SHA-256 hash of the profile content at register time. Auditable even if the file changes. */
|
|
72
|
+
agent_profile_hash?: string;
|
|
73
|
+
/** MCP tool calls made during this step, if any. */
|
|
74
|
+
tool_calls?: ToolCallRecord[];
|
|
75
|
+
/**
|
|
76
|
+
* Present only when the step used input_map. Records the concrete params the engine
|
|
77
|
+
* derived from run state and passed to the service adapter. Absent for all other step types.
|
|
78
|
+
*/
|
|
79
|
+
resolved_params?: Record<string, unknown>;
|
|
80
|
+
/**
|
|
81
|
+
* Canonical stored trace entries for this step. Present only on agent execution steps
|
|
82
|
+
* when the agent submitted a non-empty trace that survived normalization.
|
|
83
|
+
* Excludes evidence_hash computation — integrity is tracked separately via trace_digest.
|
|
84
|
+
*/
|
|
85
|
+
trace?: TraceEntry[];
|
|
86
|
+
/**
|
|
87
|
+
* SHA-256 hex digest of JSON.stringify(trace). Present when trace is non-empty.
|
|
88
|
+
* Separate from evidence_hash, which covers output_summary only.
|
|
89
|
+
*/
|
|
90
|
+
trace_digest?: string;
|
|
91
|
+
/**
|
|
92
|
+
* Discard and truncation accounting from the trace normalizer.
|
|
93
|
+
* Present whenever the agent submitted a trace (even if all entries were dropped).
|
|
94
|
+
* Absent when no trace was submitted.
|
|
95
|
+
*/
|
|
96
|
+
trace_summary?: TraceNormalizationSummary;
|
|
97
|
+
}
|
|
98
|
+
export interface PendingGate {
|
|
99
|
+
gate_id: string;
|
|
100
|
+
step_name: string;
|
|
101
|
+
/** Output produced by the step dispatcher; presented to the human for review. */
|
|
102
|
+
preview: Record<string, unknown>;
|
|
103
|
+
choices: string[];
|
|
104
|
+
opened_at: string;
|
|
105
|
+
/**
|
|
106
|
+
* Slack user ID or handle declared on the step's gate config.
|
|
107
|
+
* Optional — absent when the workflow step has no owner field.
|
|
108
|
+
*/
|
|
109
|
+
owner?: string;
|
|
110
|
+
/**
|
|
111
|
+
* Developer-authored gate message resolved from run data at gate-open time.
|
|
112
|
+
* Present only when gate.message is configured on the step. Never derived from step.prompt.
|
|
113
|
+
* Preserved into EvidenceSnapshot.gate_message at gate resolution for audit purposes.
|
|
114
|
+
*/
|
|
115
|
+
resolved_message?: string;
|
|
116
|
+
/**
|
|
117
|
+
* Per-choice messages for Slack thread resolution confirmation.
|
|
118
|
+
* Copied verbatim from gate.resolution_messages on the step definition.
|
|
119
|
+
* The CLI reads the message for the chosen key and posts it to the thread.
|
|
120
|
+
*/
|
|
121
|
+
resolution_messages?: Record<string, string>;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Derived phase of a workflow run. Always computed from the four step sets and run state;
|
|
125
|
+
* never set directly by callers outside the engine.
|
|
126
|
+
*/
|
|
127
|
+
export type RunPhase = 'running' | 'gate_waiting' | 'completed' | 'failed' | 'abandoned';
|
|
128
|
+
/** Snapshot of a single workflow context entry taken at run start. */
|
|
129
|
+
export interface WorkflowContextSnapshot {
|
|
130
|
+
/** Absolute path the content was read from. */
|
|
131
|
+
source_path: string;
|
|
132
|
+
/** Raw file content. Empty string if the file could not be read. */
|
|
133
|
+
content: string;
|
|
134
|
+
/** SHA-256 hex hash of content. Empty string if the file could not be read. */
|
|
135
|
+
content_hash: string;
|
|
136
|
+
/** ISO timestamp when the snapshot was taken. */
|
|
137
|
+
loaded_at: string;
|
|
138
|
+
/** Set when the file could not be read. Content and hash will be empty strings. */
|
|
139
|
+
error?: string;
|
|
140
|
+
}
|
|
141
|
+
export interface RunRecord {
|
|
142
|
+
id: string;
|
|
143
|
+
workflow_id: string;
|
|
144
|
+
workflow_version: number;
|
|
145
|
+
completed_steps: string[];
|
|
146
|
+
in_progress_steps: string[];
|
|
147
|
+
failed_steps: string[];
|
|
148
|
+
/** Steps whose trigger_rule can no longer be satisfied; recorded for auditability. */
|
|
149
|
+
skipped_steps: string[];
|
|
150
|
+
/**
|
|
151
|
+
* Derived convenience field — set by the engine on every write, read by CLI and get_run_state.
|
|
152
|
+
* Always computable from the four step sets, terminal_state, and pending_gate.
|
|
153
|
+
*/
|
|
154
|
+
run_phase: RunPhase;
|
|
155
|
+
version: number;
|
|
156
|
+
params: Record<string, unknown>;
|
|
157
|
+
evidence: EvidenceSnapshot[];
|
|
158
|
+
/**
|
|
159
|
+
* Snapshots of workflow context files loaded at run start.
|
|
160
|
+
* Keyed by entry name. Separate from step evidence — not in evidence[].
|
|
161
|
+
*/
|
|
162
|
+
workflow_context_snapshots?: Record<string, WorkflowContextSnapshot>;
|
|
163
|
+
created_at: string;
|
|
164
|
+
updated_at: string;
|
|
165
|
+
terminal_state: boolean;
|
|
166
|
+
terminal_reason?: string;
|
|
167
|
+
pending_gate?: PendingGate;
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=run-record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-record.d.ts","sourceRoot":"","sources":["../../src/types/run-record.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-record.js","sourceRoot":"","sources":["../../src/types/run-record.ts"],"names":[],"mappings":""}
|