@tangle-network/agent-app 0.43.67 → 0.43.69
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 +1 -1
- package/dist/assistant/index.d.ts +4 -2
- package/dist/assistant/index.js +6 -3
- package/dist/assistant/index.js.map +1 -1
- package/dist/{attachment-validation-B2FFna9E.d.ts → attachment-validation-Dv1A_Puy.d.ts} +1 -1
- package/dist/chat-routes/index.d.ts +4 -3
- package/dist/chat-routes/index.js +6 -4
- package/dist/chat-routes/index.js.map +1 -1
- package/dist/chat-store/index.d.ts +3 -2
- package/dist/chat-store/index.js +4 -1
- package/dist/chat-store/index.js.map +1 -1
- package/dist/{chunk-JWBZ74TW.js → chunk-7ESQUSAC.js} +5 -3
- package/dist/{chunk-JWBZ74TW.js.map → chunk-7ESQUSAC.js.map} +1 -1
- package/dist/{chunk-X3N2H6JE.js → chunk-AFNTRJQ7.js} +10 -1
- package/dist/chunk-AFNTRJQ7.js.map +1 -0
- package/dist/chunk-F2CBC4DY.js +193 -0
- package/dist/chunk-F2CBC4DY.js.map +1 -0
- package/dist/chunk-HRH7ASAG.js +759 -0
- package/dist/chunk-HRH7ASAG.js.map +1 -0
- package/dist/{chunk-YTSEDJWA.js → chunk-RXOTWZ4G.js} +22 -6
- package/dist/chunk-RXOTWZ4G.js.map +1 -0
- package/dist/chunk-UDSY2F6N.js +331 -0
- package/dist/chunk-UDSY2F6N.js.map +1 -0
- package/dist/chunk-UOAYS72M.js +80 -0
- package/dist/chunk-UOAYS72M.js.map +1 -0
- package/dist/chunk-UP33Z633.js +141 -0
- package/dist/chunk-UP33Z633.js.map +1 -0
- package/dist/{chunk-FMDMI25K.js → chunk-V55WJSR4.js} +2 -2
- package/dist/{chunk-YKBDH2UY.js → chunk-WL7XHLDK.js} +2 -2
- package/dist/{chunk-7CTIUCQ4.js → chunk-YEFFHORB.js} +2 -73
- package/dist/chunk-YEFFHORB.js.map +1 -0
- package/dist/eval-campaign/index.d.ts +2 -81
- package/dist/index.d.ts +5 -1
- package/dist/index.js +62 -8
- package/dist/{parts-Bg8qcDvB.d.ts → parts-2ymE5cs-.d.ts} +15 -2
- package/dist/queue-C24V13h9.d.ts +68 -0
- package/dist/runtime/index.js +3 -2
- package/dist/sandbox/index.js +3 -2
- package/dist/teams/index.js +5 -5
- package/dist/teams/invitations-api.js +4 -4
- package/dist/teams-react/index.js +3 -3
- package/dist/tools/index.js +8 -6
- package/dist/trust-gate-Dcm5xSva.d.ts +83 -0
- package/dist/turn-stream/index.d.ts +185 -24
- package/dist/turn-stream/index.js.map +1 -1
- package/dist/types-CEchbvgz.d.ts +268 -0
- package/dist/web-react/index.d.ts +97 -5
- package/dist/web-react/index.js +31 -4
- package/dist/work-product/index.d.ts +331 -0
- package/dist/work-product/index.js +54 -0
- package/dist/work-product/index.js.map +1 -0
- package/dist/work-product-react/index.d.ts +36 -0
- package/dist/work-product-react/index.js +180 -0
- package/dist/work-product-react/index.js.map +1 -0
- package/package.json +15 -1
- package/dist/chunk-7CTIUCQ4.js.map +0 -1
- package/dist/chunk-X3N2H6JE.js.map +0 -1
- package/dist/chunk-YTSEDJWA.js.map +0 -1
- /package/dist/{chunk-FMDMI25K.js.map → chunk-V55WJSR4.js.map} +0 -0
- /package/dist/{chunk-YKBDH2UY.js.map → chunk-WL7XHLDK.js.map} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/work-product/queue.ts"],"sourcesContent":["/**\n * The review queue is a PROJECTION, not a store — a client-safe pure fold of\n * existing sources into queue items (the `/missions` events.ts pattern: pure\n * data, re-validation at JSON boundaries). The only genuinely-new durable\n * state behind it is the {@link WorkProductRecord} row and its status\n * machine; everything else reads what already exists:\n *\n * - intake: a chat thread for the engagement scope with NO record yet\n * - missing_info: the open record's thread has a PENDING `/interactions` ask\n * - working: record status `draft` (the live token tail stays on the chat\n * surface's existing running-turns endpoint — the projection tracks no\n * live runs, per the reuse-the-primitive invariant)\n * - ready_for_review / changes_requested / approved / blocked: read directly\n * off `WorkProductRecord.status` (blocked surfaces its unresolved count)\n */\n\nimport {\n isWorkProductStatus,\n unresolvedBlockingExceptions,\n type WorkProductProvenance,\n type WorkProductRecord,\n type WorkProductRef,\n} from './types'\n\nexport type ReviewQueueState =\n | 'intake'\n | 'missing_info'\n | 'working'\n | 'ready_for_review'\n | 'changes_requested'\n | 'approved'\n | 'blocked'\n\n/** One row of the review queue projection for an engagement scope */\nexport interface ReviewQueueItem {\n scopeKey: string\n state: ReviewQueueState\n threadId: string | null\n workProduct?: WorkProductRef & { title: string; kind: string }\n /** The pending `/interactions` ask parking this scope, when any. */\n pendingAsk?: { interactionId: string; title: string }\n blockingExceptions: number\n failedChecks: number\n provenance?: Pick<WorkProductProvenance, 'profileHash' | 'servingModels'>\n updatedAt: number\n}\n\n/** An engagement-scoped chat thread — the intake candidate source. Products\n * that scope threads already carry a scopeKey-style column. */\nexport interface ReviewQueueThread {\n scopeKey: string\n threadId: string\n updatedAt: number\n}\n\n/** A pending `/interactions` ask on a thread (from the existing list\n * endpoint) — the missing_info source. */\nexport interface ReviewQueuePendingAsk {\n threadId: string\n interactionId: string\n title: string\n}\n\n/** Existing-source inputs the projection folds — no new stores */\nexport interface ReviewQueueInputs {\n workProducts: readonly WorkProductRecord[]\n /** Engagement threads with no work product yet → intake items. */\n threads?: readonly ReviewQueueThread[]\n /** Pending asks by thread → missing_info override on open records. */\n pendingAsks?: readonly ReviewQueuePendingAsk[]\n}\n\nconst OPEN_STATUSES = new Set(['draft', 'blocked', 'ready', 'changes_requested'])\n\n/** The record that represents a scope in the queue: its single open row when\n * one exists, else its latest approved version. Superseded rows are history\n * and never surface. */\nfunction currentRecordPerScope(records: readonly WorkProductRecord[]): Map<string, WorkProductRecord> {\n const byScope = new Map<string, WorkProductRecord>()\n for (const record of records) {\n if (record.status === 'superseded') continue\n const held = byScope.get(record.scopeKey)\n if (!held) {\n byScope.set(record.scopeKey, record)\n continue\n }\n const heldOpen = OPEN_STATUSES.has(held.status)\n const recordOpen = OPEN_STATUSES.has(record.status)\n if (recordOpen !== heldOpen) {\n if (recordOpen) byScope.set(record.scopeKey, record)\n continue\n }\n if (record.version > held.version || (record.version === held.version && record.updatedAt > held.updatedAt)) {\n byScope.set(record.scopeKey, record)\n }\n }\n return byScope\n}\n\nfunction stateOf(record: WorkProductRecord, pendingAsk: ReviewQueuePendingAsk | undefined): ReviewQueueState {\n switch (record.status) {\n case 'ready':\n return 'ready_for_review'\n case 'changes_requested':\n return 'changes_requested'\n case 'approved':\n return 'approved'\n case 'blocked':\n return pendingAsk ? 'missing_info' : 'blocked'\n case 'draft':\n return pendingAsk ? 'missing_info' : 'working'\n // 'superseded' is filtered before this switch.\n default:\n return 'working'\n }\n}\n\n/** Fold the existing sources into queue items, newest first. */\nexport function projectReviewQueue(inputs: ReviewQueueInputs): ReviewQueueItem[] {\n const asksByThread = new Map<string, ReviewQueuePendingAsk>()\n for (const ask of inputs.pendingAsks ?? []) {\n if (!asksByThread.has(ask.threadId)) asksByThread.set(ask.threadId, ask)\n }\n\n const items: ReviewQueueItem[] = []\n const byScope = currentRecordPerScope(inputs.workProducts)\n for (const [scopeKey, record] of byScope) {\n const pendingAsk = record.threadId ? asksByThread.get(record.threadId) : undefined\n const item: ReviewQueueItem = {\n scopeKey,\n state: stateOf(record, pendingAsk),\n threadId: record.threadId,\n workProduct: {\n id: record.id,\n version: record.version,\n title: record.artifact?.title ?? scopeKey,\n kind: record.artifact?.kind ?? '',\n },\n blockingExceptions: unresolvedBlockingExceptions(record.exceptions).length,\n failedChecks: record.checks.filter((check) => !check.passed).length,\n provenance: { profileHash: record.provenance.profileHash, servingModels: record.provenance.servingModels },\n updatedAt: record.updatedAt,\n }\n if (pendingAsk) item.pendingAsk = { interactionId: pendingAsk.interactionId, title: pendingAsk.title }\n items.push(item)\n }\n\n // Intake: an engagement thread with no record for its scope.\n for (const thread of inputs.threads ?? []) {\n if (byScope.has(thread.scopeKey)) continue\n if (items.some((item) => item.scopeKey === thread.scopeKey)) continue\n items.push({\n scopeKey: thread.scopeKey,\n state: 'intake',\n threadId: thread.threadId,\n blockingExceptions: 0,\n failedChecks: 0,\n updatedAt: thread.updatedAt,\n })\n }\n\n return items.sort((a, b) => b.updatedAt - a.updatedAt)\n}\n\n/** Re-validate one JSON-boundary row into a queue item; null for junk. The\n * client-side twin of the server projection, for payloads that cross a\n * fetch boundary. */\nexport function parseReviewQueueItem(raw: unknown): ReviewQueueItem | null {\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) return null\n const record = raw as Record<string, unknown>\n const states: readonly ReviewQueueState[] = [\n 'intake',\n 'missing_info',\n 'working',\n 'ready_for_review',\n 'changes_requested',\n 'approved',\n 'blocked',\n ]\n if (typeof record.scopeKey !== 'string' || record.scopeKey.length === 0) return null\n if (!states.includes(record.state as ReviewQueueState)) return null\n if (record.threadId !== null && typeof record.threadId !== 'string') return null\n if (typeof record.blockingExceptions !== 'number' || typeof record.failedChecks !== 'number') return null\n if (typeof record.updatedAt !== 'number') return null\n const item: ReviewQueueItem = {\n scopeKey: record.scopeKey,\n state: record.state as ReviewQueueState,\n threadId: record.threadId,\n blockingExceptions: record.blockingExceptions,\n failedChecks: record.failedChecks,\n updatedAt: record.updatedAt,\n }\n const workProduct = record.workProduct as Record<string, unknown> | undefined\n if (workProduct && typeof workProduct === 'object') {\n if (\n typeof workProduct.id === 'string' &&\n typeof workProduct.version === 'number' &&\n typeof workProduct.title === 'string' &&\n typeof workProduct.kind === 'string'\n ) {\n item.workProduct = {\n id: workProduct.id,\n version: workProduct.version,\n title: workProduct.title,\n kind: workProduct.kind,\n }\n }\n }\n const pendingAsk = record.pendingAsk as Record<string, unknown> | undefined\n if (pendingAsk && typeof pendingAsk === 'object') {\n if (typeof pendingAsk.interactionId === 'string' && typeof pendingAsk.title === 'string') {\n item.pendingAsk = { interactionId: pendingAsk.interactionId, title: pendingAsk.title }\n }\n }\n const provenance = record.provenance as Record<string, unknown> | undefined\n if (provenance && typeof provenance === 'object') {\n if (\n typeof provenance.profileHash === 'string' &&\n Array.isArray(provenance.servingModels) &&\n provenance.servingModels.every((model) => typeof model === 'string')\n ) {\n item.provenance = { profileHash: provenance.profileHash, servingModels: provenance.servingModels as string[] }\n }\n }\n return item\n}\n\n/** Convenience guard used when a status string crosses a JSON boundary. */\nexport { isWorkProductStatus }\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
formatBytes
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-AFNTRJQ7.js";
|
|
4
4
|
|
|
5
5
|
// src/chat-routes/binary-sniff.ts
|
|
6
6
|
function bytesStartWith(bytes, offset, signature) {
|
|
@@ -236,4 +236,4 @@ export {
|
|
|
236
236
|
attachmentTotalSizeErrorMessage,
|
|
237
237
|
createSandboxFileIndexRoute
|
|
238
238
|
};
|
|
239
|
-
//# sourceMappingURL=chunk-
|
|
239
|
+
//# sourceMappingURL=chunk-V55WJSR4.js.map
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
import {
|
|
11
11
|
dispatchAppTool,
|
|
12
12
|
outcomeStatus
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-UOAYS72M.js";
|
|
14
14
|
|
|
15
15
|
// src/tools/capability.ts
|
|
16
16
|
async function createCapabilityToken(userId, opts) {
|
|
@@ -126,4 +126,4 @@ export {
|
|
|
126
126
|
restrictTaxonomy,
|
|
127
127
|
handleAppToolRequest
|
|
128
128
|
};
|
|
129
|
-
//# sourceMappingURL=chunk-
|
|
129
|
+
//# sourceMappingURL=chunk-WL7XHLDK.js.map
|
|
@@ -105,74 +105,6 @@ function findCustomTool(name, tools) {
|
|
|
105
105
|
return tools?.find((t) => t.name === name);
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
// src/tools/dispatch.ts
|
|
109
|
-
async function dispatchAppTool(toolName, rawArgs, ctx, opts) {
|
|
110
|
-
try {
|
|
111
|
-
if (!isAppToolName(toolName)) {
|
|
112
|
-
const custom = findCustomTool(toolName, opts.customTools);
|
|
113
|
-
if (!custom) return { ok: false, code: "unknown_tool", message: `${toolName} is not an app tool.` };
|
|
114
|
-
const result = await custom.execute(rawArgs, ctx);
|
|
115
|
-
return { ok: true, result };
|
|
116
|
-
}
|
|
117
|
-
if (toolName === "submit_proposal") {
|
|
118
|
-
const type = String(rawArgs.type ?? "").trim();
|
|
119
|
-
const title = String(rawArgs.title ?? "").trim();
|
|
120
|
-
if (!type || !opts.taxonomy.proposalTypes.includes(type)) {
|
|
121
|
-
return { ok: false, code: "invalid_type", message: `type must be one of: ${opts.taxonomy.proposalTypes.join(", ")}.` };
|
|
122
|
-
}
|
|
123
|
-
if (!title) return { ok: false, code: "missing_title", message: "title is required." };
|
|
124
|
-
const description = rawArgs.description == null ? null : String(rawArgs.description);
|
|
125
|
-
let regulated = opts.taxonomy.regulatedTypes.includes(type);
|
|
126
|
-
if (opts.needsApproval) {
|
|
127
|
-
try {
|
|
128
|
-
regulated = await opts.needsApproval(type, { title, description }, ctx);
|
|
129
|
-
} catch {
|
|
130
|
-
regulated = true;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
const r2 = await opts.handlers.submitProposal({ type, title, description, regulated }, ctx);
|
|
134
|
-
const { proposalId, deduped, status, ...extra } = r2;
|
|
135
|
-
const effectiveStatus = status ?? "queued_for_approval";
|
|
136
|
-
opts.onProduced?.({
|
|
137
|
-
type: "proposal_created",
|
|
138
|
-
proposalId,
|
|
139
|
-
title,
|
|
140
|
-
status: effectiveStatus === "executed" ? "executed" : "pending",
|
|
141
|
-
content: description ?? void 0
|
|
142
|
-
});
|
|
143
|
-
return { ok: true, result: { ...extra, status: effectiveStatus, proposalId, deduped, regulated } };
|
|
144
|
-
}
|
|
145
|
-
if (toolName === "schedule_followup") {
|
|
146
|
-
const r2 = await opts.handlers.scheduleFollowup(
|
|
147
|
-
{ title: String(rawArgs.title ?? ""), dueDate: String(rawArgs.dueDate ?? ""), priority: rawArgs.priority },
|
|
148
|
-
ctx
|
|
149
|
-
);
|
|
150
|
-
return { ok: true, result: { followupId: r2.id, dueDate: r2.dueDate, deduped: r2.deduped } };
|
|
151
|
-
}
|
|
152
|
-
if (toolName === "render_ui") {
|
|
153
|
-
const r2 = await opts.handlers.renderUi({ title: String(rawArgs.title ?? ""), schema: rawArgs.schema }, ctx);
|
|
154
|
-
opts.onProduced?.({ type: "artifact", path: r2.path, content: r2.content });
|
|
155
|
-
return { ok: true, result: { path: r2.path } };
|
|
156
|
-
}
|
|
157
|
-
const r = await opts.handlers.addCitation(
|
|
158
|
-
{ path: String(rawArgs.path ?? ""), quote: String(rawArgs.quote ?? ""), label: rawArgs.label },
|
|
159
|
-
ctx
|
|
160
|
-
);
|
|
161
|
-
return { ok: true, result: { citationId: r.citationId, path: r.path } };
|
|
162
|
-
} catch (err) {
|
|
163
|
-
if (err instanceof ToolInputError) return { ok: false, code: err.code, message: err.message, status: err.status };
|
|
164
|
-
return { ok: false, code: "app_tool_error", message: err instanceof Error ? err.message : String(err), status: 500 };
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
function outcomeStatus(outcome) {
|
|
168
|
-
return outcome.status ?? 400;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
// src/tools/runtime.ts
|
|
172
|
-
function createAppToolRuntimeExecutor(opts) {
|
|
173
|
-
return ({ toolName, args }) => dispatchAppTool(toolName, args, opts.ctx, opts);
|
|
174
|
-
}
|
|
175
|
-
|
|
176
108
|
export {
|
|
177
109
|
ToolInputError,
|
|
178
110
|
APP_TOOL_NAMES,
|
|
@@ -180,9 +112,6 @@ export {
|
|
|
180
112
|
buildAppToolOpenAITools,
|
|
181
113
|
defineAppTool,
|
|
182
114
|
customToolToOpenAI,
|
|
183
|
-
findCustomTool
|
|
184
|
-
dispatchAppTool,
|
|
185
|
-
outcomeStatus,
|
|
186
|
-
createAppToolRuntimeExecutor
|
|
115
|
+
findCustomTool
|
|
187
116
|
};
|
|
188
|
-
//# sourceMappingURL=chunk-
|
|
117
|
+
//# sourceMappingURL=chunk-YEFFHORB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tools/errors.ts","../src/tools/openai.ts","../src/tools/registry.ts"],"sourcesContent":["/** A correctable bad-input error a tool handler throws; the HTTP layer maps it\n * to a 4xx with the code, the runtime layer to a failed tool_result. So the\n * agent learns the call failed and can correct, instead of a silent success. */\nexport class ToolInputError extends Error {\n constructor(\n public code: string,\n message: string,\n public status = 400,\n ) {\n super(message)\n this.name = 'ToolInputError'\n }\n}\n","import type { AppToolTaxonomy, BuildAppToolsOptions } from './types'\n\n/** The four canonical app-tool names. Stable identifiers the model calls in\n * both the sandbox (MCP server name) and runtime (function-tool name) paths. */\nexport const APP_TOOL_NAMES = ['submit_proposal', 'schedule_followup', 'render_ui', 'add_citation'] as const\n/** Resolve a valid application tool name from the predefined list of tool names */\nexport type AppToolName = (typeof APP_TOOL_NAMES)[number]\n\nconst NAME_SET = new Set<string>(APP_TOOL_NAMES)\n/** Determine if a string matches a valid application tool name */\nexport function isAppToolName(name: string): name is AppToolName {\n return NAME_SET.has(name)\n}\n\n/** A minimal OpenAI Chat Completions function-tool shape — structurally\n * compatible with `@tangle-network/agent-runtime`'s `OpenAIChatTool` without\n * importing it (keeps this package runtime-free). */\nexport interface OpenAIFunctionTool {\n type: 'function'\n function: {\n name: string\n description: string\n parameters: Record<string, unknown>\n }\n}\n\n/**\n * Build the four app tools in OpenAI function-tool shape. `submit_proposal`'s\n * `type` enum is the product's {@link AppToolTaxonomy.proposalTypes}; the\n * model-facing descriptions and the follow-up priority enum default to the\n * Tangle reference vocabulary and can be retuned via {@link BuildAppToolsOptions}\n * (the tool names + JSON-Schema shapes stay fixed — they are mechanism). Pass\n * the result to the agent-runtime backend's `tools`.\n */\nexport function buildAppToolOpenAITools(\n taxonomy: AppToolTaxonomy,\n opts?: BuildAppToolsOptions,\n): OpenAIFunctionTool[] {\n const d = opts?.descriptions\n const priorityValues = opts?.priorityValues ?? ['low', 'medium', 'high']\n const custom: OpenAIFunctionTool[] = (opts?.customTools ?? []).map((t) => ({\n type: 'function',\n function: { name: t.name, description: t.description, parameters: t.parameters },\n }))\n return [\n {\n type: 'function',\n function: {\n name: 'submit_proposal',\n description:\n d?.submit_proposal ??\n 'Route a regulated or state-changing action to a human for approval (a recommendation, contacting/soliciting a contact, outreach, a record/account change, scheduling). Queues it for a named certified human to approve before it executes.',\n parameters: {\n type: 'object',\n properties: {\n type: { type: 'string', enum: [...taxonomy.proposalTypes] },\n title: { type: 'string', description: 'Short label for the approval queue.' },\n description: { type: 'string', description: 'The full drafted message/recommendation, with sources.' },\n },\n required: ['type', 'title'],\n },\n },\n },\n {\n type: 'function',\n function: {\n name: 'schedule_followup',\n description:\n d?.schedule_followup ??\n 'Register a dated cadence step (a reminder, chase, or check-in) on the follow-up calendar. Executes immediately.',\n parameters: {\n type: 'object',\n properties: {\n title: { type: 'string' },\n dueDate: { type: 'string', description: 'ISO date YYYY-MM-DD.' },\n priority: { type: 'string', enum: [...priorityValues] },\n },\n required: ['title', 'dueDate'],\n },\n },\n },\n {\n type: 'function',\n function: {\n name: 'render_ui',\n description:\n d?.render_ui ??\n 'Show a generated view live in the workspace. Validates the OpenUI JSON and persists the artifact. Executes immediately.',\n parameters: {\n type: 'object',\n properties: {\n title: { type: 'string' },\n schema: { type: 'object', description: 'The OpenUI JSON object.' },\n },\n required: ['title', 'schema'],\n },\n },\n },\n {\n type: 'function',\n function: {\n name: 'add_citation',\n description:\n d?.add_citation ??\n 'Anchor a grounding reference: the exact quote from a file backing a figure or claim. Verifies the quote appears in the file. Executes immediately.',\n parameters: {\n type: 'object',\n properties: {\n path: { type: 'string', description: 'The vault file path.' },\n quote: { type: 'string', description: 'The exact text from it.' },\n },\n required: ['path', 'quote'],\n },\n },\n },\n ...custom,\n ]\n}\n","import { isAppToolName } from './openai'\nimport type { AppToolContext } from './types'\nimport type { OpenAIFunctionTool } from './openai'\n\n/**\n * A product-defined app tool — the open registration seam.\n *\n * The four built-ins (`submit_proposal`/`schedule_followup`/`render_ui`/\n * `add_citation`) are mechanism and stay hard-typed. This is how a product adds\n * a fifth+ tool (e.g. gtm-agent's `set_config`) WITHOUT forking the shell: the\n * `name` + JSON-Schema `parameters` are what the model sees, and `execute` is\n * dispatched through the SAME validation/outcome path as the built-ins — a\n * thrown {@link ToolInputError} becomes a correctable 4xx, any other throw an\n * internal error, and a tool call never silently \"succeeds\" without its effect.\n */\nexport interface AppToolDefinition<Args = Record<string, unknown>> {\n /** Stable identifier the model calls (and the MCP server name). Must not\n * collide with a built-in app tool. */\n name: string\n /** Model-facing description. */\n description: string\n /** JSON-Schema for the parameters (the OpenAI `function.parameters` object). */\n parameters: Record<string, unknown>\n /** Default route path the per-turn MCP server / HTTP handler is mounted at.\n * Overridable per call via `paths`/`buildHttpMcpServer`. */\n path?: string\n /** Fulfil the call; the return value is the tool result the model sees.\n * `ctx` is the trusted per-turn identity (never from tool args). */\n execute: (args: Args, ctx: AppToolContext) => Promise<unknown> | unknown\n}\n\n/**\n * Validate + brand a product tool definition. Throws when the name is empty or\n * collides with a built-in (those are reserved mechanism). Identity otherwise —\n * call it at module scope so a bad definition fails at boot, not first use.\n */\nexport function defineAppTool<Args = Record<string, unknown>>(def: AppToolDefinition<Args>): AppToolDefinition<Args> {\n const name = def.name?.trim()\n if (!name) throw new Error('defineAppTool: name is required')\n if (isAppToolName(name)) throw new Error(`defineAppTool: \"${name}\" is a built-in app tool — choose a different name`)\n if (typeof def.execute !== 'function') throw new Error(`defineAppTool: \"${name}\" needs an execute() handler`)\n return def\n}\n\n/** The OpenAI function-tool def for a custom tool — appended to the built-ins by\n * `buildAppToolOpenAITools`. */\nexport function customToolToOpenAI(def: AppToolDefinition): OpenAIFunctionTool {\n return { type: 'function', function: { name: def.name, description: def.description, parameters: def.parameters } }\n}\n\n/** Find a registered custom tool by the name the model called. */\nexport function findCustomTool(\n name: string,\n tools: readonly AppToolDefinition[] | undefined,\n): AppToolDefinition | undefined {\n return tools?.find((t) => t.name === name)\n}\n"],"mappings":"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","names":[]}
|
|
@@ -2,88 +2,9 @@ import { JudgeVerdict } from '@tangle-network/agent-eval';
|
|
|
2
2
|
export { EnsembleAggregate, JudgeVerdict, RunRecord, aggregateJudgeVerdicts } from '@tangle-network/agent-eval';
|
|
3
3
|
import { Scenario, JudgeConfig } from '@tangle-network/agent-eval/campaign';
|
|
4
4
|
export { CampaignResult, DispatchContext, Gate, JudgeConfig, JudgeDimension, JudgeScore, LabeledScenarioStore, MutableSurface, Mutator, Scenario, SurfaceProposer, defaultProductionGate, evolutionaryProposer, gepaProposer, paretoSignificanceGate, runCampaign } from '@tangle-network/agent-eval/campaign';
|
|
5
|
+
export { T as TrustItem, a as TrustThresholds, b as TrustVerdict, t as trustVerdicts } from '../trust-gate-Dcm5xSva.js';
|
|
5
6
|
export { SelfImproveBudget, SelfImproveOptions, SelfImproveResult, selfImprove } from '@tangle-network/agent-eval/contract';
|
|
6
7
|
|
|
7
|
-
/**
|
|
8
|
-
* Trust gate — decides whether an ensemble's scores are allowed to be BELIEVED,
|
|
9
|
-
* one level up from {@link aggregateJudgeVerdicts} (which only reduces ONE
|
|
10
|
-
* artifact's raters to a composite). A composite is a number; this is the check
|
|
11
|
-
* that the number means anything. It is the code "Enforced by" for the
|
|
12
|
-
* measurement-validation skill's after-gate ("is this result allowed to be
|
|
13
|
-
* believed").
|
|
14
|
-
*
|
|
15
|
-
* Three checks, each fail-loud and named in `trustReasons`:
|
|
16
|
-
* (1) inter-rater reliability over the corpus ≥ `irrFloor` — raters that
|
|
17
|
-
* disagree no better than chance carry no signal to optimize against.
|
|
18
|
-
* (2) per-item rater spread ≤ `spreadCeiling` — for EACH item, raters must
|
|
19
|
-
* converge on THAT item.
|
|
20
|
-
* (3) surviving raters per item ≥ `minSurvivors` — a mean over one or two
|
|
21
|
-
* raters is an anecdote, not an ensemble.
|
|
22
|
-
*
|
|
23
|
-
* CRITICAL metric semantics — per-item spread is rater disagreement about the
|
|
24
|
-
* SAME item: `max(score) − min(score)` across the raters that scored THAT item
|
|
25
|
-
* (max over its dimensions), never pooled across different items or across the
|
|
26
|
-
* baseline/candidate sides. Pooling reads a genuine quality gap BETWEEN items as
|
|
27
|
-
* "the raters split" and so trips the gate exactly when the finding is largest —
|
|
28
|
-
* the failure mode the after-gate exists to prevent. The corpus IRR (check 1)
|
|
29
|
-
* leans on the substrate's `interRaterReliability`, whose expected-disagreement
|
|
30
|
-
* denominator already pools across items, so genuine item-to-item variation
|
|
31
|
-
* RAISES reliability rather than lowering it.
|
|
32
|
-
*/
|
|
33
|
-
|
|
34
|
-
/** One item's raters: the per-judge verdicts {@link aggregateJudgeVerdicts}
|
|
35
|
-
* reduces, tagged with the item they scored so spread stays within-item. */
|
|
36
|
-
interface TrustItem<D extends string = string> {
|
|
37
|
-
/** Stable item identifier — surfaces in `perItemSpread` and `trustReasons`. */
|
|
38
|
-
itemId: string;
|
|
39
|
-
/** The raters' verdicts for THIS item (one per judge call). A failed judge
|
|
40
|
-
* (`perDimension: null`) is dropped before spread/IRR, never folded as 0. */
|
|
41
|
-
verdicts: readonly JudgeVerdict<D>[];
|
|
42
|
-
}
|
|
43
|
-
/** Thresholds for {@link trustVerdicts}. All overridable; defaults are the
|
|
44
|
-
* conservative after-gate bar. */
|
|
45
|
-
interface TrustThresholds {
|
|
46
|
-
/** Minimum corpus inter-rater reliability (Krippendorff-style α). Below this
|
|
47
|
-
* the raters agree no better than chance. Default 0.2. */
|
|
48
|
-
irrFloor?: number;
|
|
49
|
-
/** Maximum per-item rater spread (`max − min` over a single item's surviving
|
|
50
|
-
* raters, across its dimensions). Above this the raters split ON THAT ITEM.
|
|
51
|
-
* Default 0.5. */
|
|
52
|
-
spreadCeiling?: number;
|
|
53
|
-
/** Minimum surviving (non-failed) raters required per item. Default 3. */
|
|
54
|
-
minSurvivors?: number;
|
|
55
|
-
}
|
|
56
|
-
/** Result of the trust gate. `trustworthy` iff every check passed; `trustReasons`
|
|
57
|
-
* is empty iff `trustworthy`. */
|
|
58
|
-
interface TrustVerdict {
|
|
59
|
-
/** True iff IRR ≥ floor AND every item's spread ≤ ceiling AND every item has
|
|
60
|
-
* ≥ `minSurvivors` surviving raters. */
|
|
61
|
-
trustworthy: boolean;
|
|
62
|
-
/** One entry per FAILED check, each naming its number + the offending value.
|
|
63
|
-
* Empty iff `trustworthy`. */
|
|
64
|
-
trustReasons: string[];
|
|
65
|
-
/** Corpus inter-rater reliability actually measured (the check-1 value). */
|
|
66
|
-
interRaterReliability: number;
|
|
67
|
-
/** Per-item spread (`max − min` over surviving raters, max over dimensions),
|
|
68
|
-
* keyed by `itemId`. The check-2 input, surfaced for drill-down. */
|
|
69
|
-
perItemSpread: Record<string, number>;
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Decide whether an ensemble's per-item verdicts are trustworthy enough to
|
|
73
|
-
* believe a lift computed from them. Pure: no LLM, no I/O, no clock, no random —
|
|
74
|
-
* the same `items` + `thresholds` always yield the same verdict.
|
|
75
|
-
*
|
|
76
|
-
* Sibling to {@link aggregateJudgeVerdicts}: that reduces ONE item's raters to a
|
|
77
|
-
* composite; this audits the raters ACROSS items and reports whether the
|
|
78
|
-
* composites are believable. Run it on the corpus of held-out items before
|
|
79
|
-
* reporting any lift over their scores.
|
|
80
|
-
*
|
|
81
|
-
* @throws if `items` is empty — an empty corpus has no measurable trust, and a
|
|
82
|
-
* silent `trustworthy: true` over zero evidence is the exact lie the gate
|
|
83
|
-
* exists to refuse.
|
|
84
|
-
*/
|
|
85
|
-
declare function trustVerdicts<D extends string>(items: readonly TrustItem<D>[], thresholds?: TrustThresholds): TrustVerdict;
|
|
86
|
-
|
|
87
8
|
/**
|
|
88
9
|
* Eval-campaign — the app-shell's curated surface for a product's
|
|
89
10
|
* self-improvement loop, NOT a reimplementation.
|
|
@@ -152,4 +73,4 @@ interface EnsembleJudgeConfig<TArtifact, TScenario extends Scenario, D extends s
|
|
|
152
73
|
*/
|
|
153
74
|
declare function buildEnsembleJudge<TArtifact, TScenario extends Scenario, D extends string>(cfg: EnsembleJudgeConfig<TArtifact, TScenario, D>): JudgeConfig<TArtifact, TScenario>;
|
|
154
75
|
|
|
155
|
-
export { type EnsembleJudgeConfig,
|
|
76
|
+
export { type EnsembleJudgeConfig, buildEnsembleJudge };
|
package/dist/index.d.ts
CHANGED
|
@@ -17,7 +17,7 @@ export { KeyCrypto, KeyProvisioner, PlanLimit, PlatformBalanceInfo, PlatformBala
|
|
|
17
17
|
export { HttpHeadProbeConfig, PreflightProbe, PreflightProbeResult, PreflightProbeVerdict, PreflightReport, RouterChatProbeConfig, SandboxAuthProbeConfig, formatPreflightReport, httpHeadProbe, routerChatProbe, runPreflight, sandboxAuthProbe } from './preflight/index.js';
|
|
18
18
|
export { ObjectBody, ObjectKeyParts, ObjectStore, PutObjectOptions, R2LikeBucket, R2LikeObjectBody, R2LikeObjectHead, SignObjectUrlArgs, VerifyObjectUrlResult, assertSafeKeySegment, createProxiedArtifactRoute, createR2ObjectStore, objectKey, signObjectUrl, verifyObjectUrl } from './object-store/index.js';
|
|
19
19
|
export { B as BULK_DELETE_MAX_THREADS, C as ChatStoreInputError, t as threadTitleFromMessage } from './core-7qIM7svy.js';
|
|
20
|
-
export { C as ChatAttachmentKind, a as ChatAttachmentPart, b as ChatFilePart, c as ChatImagePart, d as ChatInteractionPart, e as ChatMentionKind, f as ChatMentionPart, g as ChatMessagePart, h as ChatNoticePart, i as ChatPartTime, j as ChatPlanPart, k as ChatReasoningPart, l as ChatStepFinishPart, m as ChatStepStartPart, n as ChatSubtaskPart, o as ChatTextPart, p as ChatToolPart, q as ChatToolState, r as ChatToolStatus, s as ChatUsageTokens, D as DEFAULT_ATTACHMENT_PROMPT_HEADER, S as StorableHarnessPartKind,
|
|
20
|
+
export { C as ChatAttachmentKind, a as ChatAttachmentPart, b as ChatFilePart, c as ChatImagePart, d as ChatInteractionPart, e as ChatMentionKind, f as ChatMentionPart, g as ChatMessagePart, h as ChatNoticePart, i as ChatPartTime, j as ChatPlanPart, k as ChatReasoningPart, l as ChatStepFinishPart, m as ChatStepStartPart, n as ChatSubtaskPart, o as ChatTextPart, p as ChatToolPart, q as ChatToolState, r as ChatToolStatus, s as ChatUsageTokens, t as ChatWorkProductPart, D as DEFAULT_ATTACHMENT_PROMPT_HEADER, S as StorableHarnessPartKind, u as attachmentInputToPart, v as attachmentKindForMime, w as attachmentPartsFromMessageParts, x as buildAttachmentPromptBlock, y as historyContentWithAttachments, z as isChatAttachmentPart, A as isChatInteractionPart, B as isChatMentionPart, E as isChatPlanPart, F as isChatStepFinishPart, G as isChatTextPart, H as isChatToolPart, I as isChatWorkProductPart, J as mentionInputToPart, K as mentionPartsFromMessageParts, L as toChatMessageParts } from './parts-2ymE5cs-.js';
|
|
21
21
|
export { DeriveKeyOptions, createFieldCrypto, decodeHexKey, decryptAesGcm, decryptBytes, decryptWithKey, deriveKey, encryptAesGcm, encryptBytes, encryptWithKey } from './crypto/index.js';
|
|
22
22
|
export { J as JsonRecord, M as MISSING_TOOL_TERMINAL_ERROR, a as MISSING_TOOL_TERMINAL_REASON, S as StreamEvent, b as asRecord, c as asString, d as attachmentPartKey, e as collapseRedundantTextParts, f as draftAssistantParts, g as encodeEvent, h as finalizeAssistantParts, i as finalizePendingInteractionParts, j as getPartKey, m as mergePersistedPart, n as normalizePersistedPart, k as normalizeTime, l as normalizeToolEvent, r as resolveToolId, o as resolveToolName, t as terminalizeDanglingAssistantToolUpdates, p as terminalizeDanglingToolPart, q as terminalizeDanglingToolParts } from './stream-normalizer-QYUl4vnl.js';
|
|
23
23
|
export { PersistedChatMessageForTurn, ResolvedChatTurn, buildUserTextParts, messageHasTurnId, normalizeClientTurnId, resolveChatTurn } from './stream/index.js';
|
|
@@ -29,6 +29,9 @@ export { ChatPlan, ChatPlanPersistedPart, ChatPlanStatus, PLAN_SUBMITTED_EVENT,
|
|
|
29
29
|
export { CreateDurableInteractionRoutePersistenceOptions, DurableAnswerIntentJournal, DurableAnswerIntentRecord, DurableAnswerIntentState, DurableChatConflictError, DurableChatError, DurableChatErrorCode, DurableChatEventProjection, DurableChatGoneError, DurableChatScope, DurableChatStateStore, DurableChatUnavailableError, DurableFollowUpReceipt, DurableInteractionAcknowledgement, DurableInteractionGuarantee, DurableInteractionProjection, DurableInteractionProjectionAdapter, DurableInteractionSettlement, DurableInteractionSettlementFactoryOptions, DurableInteractionSettlementOptions, DurablePlanAuthority, DurablePlanAuthorityCurrentResult, DurablePlanAuthorityDecision, DurablePlanAuthorityResult, DurablePlanAuthorization, DurablePlanCommandJournal, DurablePlanCommandKey, DurablePlanCommandRecord, DurablePlanCommandState, DurablePlanDecision, DurablePlanEffectRecord, DurablePlanProjection, DurablePlanRouteAuthorizeArgs, DurablePlanRouteOptions, DurablePlanRoutes, DurablePlanStateStore, DurablePlanStore, InMemoryDurableChatStateStore, InMemoryDurableChatStore, PreparedDurableInteractionAnswer, applyDurableInteractionAnswer, applyDurableInteractionAsk, applyDurableInteractionCancel, createDurableChatEventProjection, createDurableChatScope, createDurableInteractionProjectionAdapter, createDurableInteractionRoutePersistence, createDurableInteractionSettlement, createDurablePlanRoutes, createInMemoryDurableChatStateStore, durableChatScopeKey, durableInteractionIntentKey, normalizePlanDecision, planAuthorityIdempotencyKey, planCommandKey, planEffectKey, recordDurableInteractionAnswer, recordDurableInteractionCancel, stablePlanReceipt, upsertDurableInteractionAsk } from './durable-chat/index.js';
|
|
30
30
|
export { CompleteMissionInput, CreateMissionInput, DEFAULT_MISSION_STEP_KINDS, InMemoryMissionStore, MISSION_CONTROL_CHANNEL_ID, MissionApprovalsPort, MissionAuditEvent, MissionConcurrencyError, MissionCostLedger, MissionEngine, MissionEngineOptions, MissionEventSink, MissionGateKind, MissionGateOptions, MissionGateProposal, MissionOutcome, MissionPlanRunOptions, MissionProposalResolution, MissionRecord, MissionService, MissionServiceOptions, MissionState, MissionStatus, MissionStep, MissionStepState, MissionStepStatus, MissionStorePort, MissionStreamEvent, MissionStreamStatus, MissionStreamStep, MissionStreamStepStatus, MissionUpdateGuard, MissionUpdatePatch, ParseMissionBlocksOptions, ParsedMission, ParsedMissionStep, PlanOutcome, RetryableStepError, SandboxDispatch, SandboxDispatchDoneResult, SandboxDispatchInProgressResult, SandboxDispatchInput, SandboxDispatchResult, SetStepStatusPatch, StepGateClassification, StepOutcome, applyMissionEvent, asMissionStreamEvent, budgetGateProposalId, buildAgentMissionPlan, createInMemoryMissionStore, createMissionEngine, createMissionService, isMissionStopRequested, isMissionTerminal, mergeMissionState, noopEventSink, parseMissionBlocks, parseSessionStreamEnvelope, reduceMissionEvents, stepGateProposalId, volumeGateProposalId } from './missions/index.js';
|
|
31
31
|
export { S as StepAgentActivity, W as WithAgentActivity, s as stepAgentActivity } from './agent-activity-C8ZG0F0M.js';
|
|
32
|
+
export { A as AgentCheckInput, E as EvidenceEntry, a as EvidenceLocator, b as ExceptionEntry, c as ExceptionSeverity, P as ProfileBacktestSummary, Q as QualityCheck, W as WorkProductArtifact, d as WorkProductAuditEvent, e as WorkProductParseResult, f as WorkProductPatch, g as WorkProductPersistedPart, h as WorkProductProvenance, i as WorkProductRecord, j as WorkProductRef, k as WorkProductStatus, l as WorkProductStorePort, m as WorkProductUpdateGuard, n as WorkProductVersionEntry, o as isWorkProductStatus, p as parseAgentCheckInput, q as parseArtifactInput, r as parseEvidenceInput, s as parseExceptionInput, t as persistedPartToWorkProduct, u as unresolvedBlockingExceptions, w as workProductToPersistedPart } from './types-CEchbvgz.js';
|
|
33
|
+
export { CreateWorkProductInput, EVIDENCE_COVERAGE_CHECK, FinalizeWorkProductProvenanceInput, InMemoryWorkProductStore, MAX_WORK_PRODUCT_BATCH, SubmitWorkProductInput, WorkProductAuthorizeArgs, WorkProductOutcome, WorkProductProvenanceBase, WorkProductRouteAuthorization, WorkProductRoutes, WorkProductRoutesOptions, WorkProductService, WorkProductServiceOptions, WorkProductToolConfig, WorkProductVerdictBody, WorkProductVerdictInput, buildWorkProductTools, canTransitionWorkProduct, createInMemoryWorkProductStore, createWorkProductRoutes, createWorkProductService, finalizeWorkProductProvenance, isWorkProductTerminal, stampProvenance, validateWorkProductVerdictBody, workProductTrustInputs } from './work-product/index.js';
|
|
34
|
+
export { R as ReviewQueueInputs, a as ReviewQueueItem, b as ReviewQueuePendingAsk, c as ReviewQueueState, d as ReviewQueueThread, p as parseReviewQueueItem, e as projectReviewQueue } from './queue-C24V13h9.js';
|
|
32
35
|
export { AppToolDescriptor, AuthenticatedSandboxUser, BuildAppToolMcpServersOptions, BuildSandboxToolFileMountsOptions, DEFAULT_SANDBOX_RESOURCES, DriveSandboxTurnOptions, ENV_TOTAL_MAX_BYTES, ENV_VALUE_MAX_BYTES, EnsureWorkspaceSandboxOptions, LivenessProbeConfig, MemberSyncSeam, Outcome, PROVISION_PAYLOAD_MAX_BYTES, PeekWorkspaceSandboxOutcome, ProfileComposeOptions, PromptInputPart, ProviderResolutionConfig, ProvisionPayloadSections, ProvisionProfileSection, ResolveSandboxClientCredentialsOptions, ResolvedModel, SandboxApiCredentials, SandboxBuildContext, SandboxClientCredentials, SandboxCredentialEnvironment, SandboxExecChannel, SandboxExecOptions, SandboxFileBytesOutcome, SandboxFileSizeOutcome, SandboxPermissionLevel, SandboxResourceConfig, SandboxRestoreSpec, SandboxRuntimeAuthRefreshError, SandboxRuntimeConfig, SandboxRuntimeConnection, SandboxScope, SandboxStepTransition, SandboxTerminalTokenOptions, SandboxTerminalTokenResult, SandboxTerminalTokenSubject, SandboxTerminalWsMatch, SandboxToolPathOptions, SandboxToolSpec, ScopedTokenResult, SecretStore, StoppedSandboxResumeFailure, StoppedSandboxResumeRecovery, StreamSandboxPromptOptions, TerminalProxyIdentity, WorkspaceSandboxConnectionArgs, WorkspaceSandboxConnectionHandlerOptions, WorkspaceSandboxEnsureContext, WorkspaceSandboxInstanceLike, WorkspaceSandboxManager, WorkspaceSandboxManagerOptions, WorkspaceSandboxRuntimeProxyArgs, WorkspaceSandboxRuntimeProxyHandlerOptions, WorkspaceSandboxTerminalUpgradeHandlerOptions, WriteProfileFilesOptions, assertEnvWithinLimits, assertProvisionPayloadWithinCap, attachReasoningEffort, bearerSubprotocolToken, bearerToken, buildAppToolMcpServers, buildSandboxRuntimeProxyHeaders, buildSandboxToolFileMounts, buildSandboxToolPathSetupScript, classifySeveredStream, createSandboxTerminalToken, createWorkspaceSandboxConnectionHandler, createWorkspaceSandboxManager, createWorkspaceSandboxRuntimeProxyHandler, createWorkspaceSandboxTerminalUpgradeHandler, deferredCorpusHash, deleteSecret, detectInteractiveQuestion, driveSandboxTurn, encodeSandboxRuntimePath, ensureWorkspaceSandbox, flattenHistory, getClient, isSandboxTerminalWsUpgrade, isTerminalPromptEvent, matchSandboxTerminalWsPath, mergeExtraMcp, mergeHistoryIntoParts, mintSandboxScopedToken, mintTerminalProxyToken, peekWorkspaceSandbox, readSandboxBinaryBytes, readSecret, resetClientCache, resolveModel, resolveSandboxClientCredentials, runSandboxPrompt, runSandboxToolPathSetup, sandboxToolBinDir, sandboxToolPath, sandboxToolRootDir, secretStoreFromClient, shellQuote, splitDeferredProfileFiles, statSandboxFileSize, storeSecret, streamSandboxPrompt, syncSandboxMemberAdd, syncSandboxMemberRemove, syncSandboxMemberRole, terminalTokenFromRequest, verifySandboxTerminalToken, verifyTerminalProxyToken, writeProfileFilesToBox } from './sandbox/index.js';
|
|
33
36
|
export { CookieOptions, JsonObject, KvLike, RateLimitResult, RequestContext, SecurityHeaderOptions, addSecurityHeaders, assertMediaUrl, checkRateLimit, clearCookieHeader, extractRequestContext, parseJsonObjectBody, readCookieValue, requireString, serializeCookie } from './web/index.js';
|
|
34
37
|
export { BuildRedactedDocumentOptions, DEFAULT_REDACTION_PATTERNS, RedactForIngestionOptions, RedactedDocSegment, RedactedDocument, RedactionPattern, RedactionSpan, RevealResult, RevealSpanOptions, buildRedactedDocument, detectSpans, maskSpans, redactForIngestion, revealSpan } from './redact/index.js';
|
|
@@ -41,6 +44,7 @@ export { CompletionRequirement, CompletionVerdict, CorrectnessChecker, ProducedS
|
|
|
41
44
|
export { F as FlowSpan, a as FlowTrace } from './flow-types-CqomVAUN.js';
|
|
42
45
|
export { InteractionData, InteractionOutcome, InteractionRequest, modelProvider } from '@tangle-network/agent-interface';
|
|
43
46
|
export { StorageConfig } from '@tangle-network/sandbox';
|
|
47
|
+
export { T as TrustItem } from './trust-gate-Dcm5xSva.js';
|
|
44
48
|
import '@tangle-network/agent-runtime/intelligence';
|
|
45
49
|
import '@tangle-network/agent-knowledge';
|
|
46
50
|
import 'zod';
|
package/dist/index.js
CHANGED
|
@@ -43,6 +43,24 @@ import {
|
|
|
43
43
|
loopTraceEventsToFlowSpans,
|
|
44
44
|
stepActivityFlowTrace
|
|
45
45
|
} from "./chunk-FBVLEGEG.js";
|
|
46
|
+
import {
|
|
47
|
+
EVIDENCE_COVERAGE_CHECK,
|
|
48
|
+
MAX_WORK_PRODUCT_BATCH,
|
|
49
|
+
buildWorkProductTools,
|
|
50
|
+
canTransitionWorkProduct,
|
|
51
|
+
createInMemoryWorkProductStore,
|
|
52
|
+
createWorkProductRoutes,
|
|
53
|
+
createWorkProductService,
|
|
54
|
+
finalizeWorkProductProvenance,
|
|
55
|
+
isWorkProductTerminal,
|
|
56
|
+
stampProvenance,
|
|
57
|
+
validateWorkProductVerdictBody,
|
|
58
|
+
workProductTrustInputs
|
|
59
|
+
} from "./chunk-HRH7ASAG.js";
|
|
60
|
+
import {
|
|
61
|
+
parseReviewQueueItem,
|
|
62
|
+
projectReviewQueue
|
|
63
|
+
} from "./chunk-UP33Z633.js";
|
|
46
64
|
import {
|
|
47
65
|
HubExecClient,
|
|
48
66
|
invokeIntegrationHub,
|
|
@@ -197,10 +215,21 @@ import {
|
|
|
197
215
|
isChatStepFinishPart,
|
|
198
216
|
isChatTextPart,
|
|
199
217
|
isChatToolPart,
|
|
218
|
+
isChatWorkProductPart,
|
|
200
219
|
mentionInputToPart,
|
|
201
220
|
mentionPartsFromMessageParts,
|
|
202
221
|
toChatMessageParts
|
|
203
|
-
} from "./chunk-
|
|
222
|
+
} from "./chunk-AFNTRJQ7.js";
|
|
223
|
+
import {
|
|
224
|
+
isWorkProductStatus,
|
|
225
|
+
parseAgentCheckInput,
|
|
226
|
+
parseArtifactInput,
|
|
227
|
+
parseEvidenceInput,
|
|
228
|
+
parseExceptionInput,
|
|
229
|
+
persistedPartToWorkProduct,
|
|
230
|
+
unresolvedBlockingExceptions,
|
|
231
|
+
workProductToPersistedPart
|
|
232
|
+
} from "./chunk-F2CBC4DY.js";
|
|
204
233
|
import {
|
|
205
234
|
MISSING_TOOL_TERMINAL_ERROR,
|
|
206
235
|
MISSING_TOOL_TERMINAL_REASON,
|
|
@@ -344,7 +373,7 @@ import {
|
|
|
344
373
|
restrictTaxonomy,
|
|
345
374
|
verifyCapabilityToken,
|
|
346
375
|
verifyExpiringCapabilityToken
|
|
347
|
-
} from "./chunk-
|
|
376
|
+
} from "./chunk-WL7XHLDK.js";
|
|
348
377
|
import {
|
|
349
378
|
DEFAULT_APP_TOOL_PATHS,
|
|
350
379
|
DEFAULT_HEADER_NAMES,
|
|
@@ -371,7 +400,7 @@ import {
|
|
|
371
400
|
runToolLoop,
|
|
372
401
|
streamToolLoop,
|
|
373
402
|
toLoopEvents
|
|
374
|
-
} from "./chunk-
|
|
403
|
+
} from "./chunk-7ESQUSAC.js";
|
|
375
404
|
import {
|
|
376
405
|
DEFAULT_TANGLE_BILLING_ENFORCEMENT_ENV_VAR,
|
|
377
406
|
DEFAULT_TANGLE_ROUTER_BASE_URL,
|
|
@@ -387,18 +416,20 @@ import {
|
|
|
387
416
|
tangleExecutionKeyHttpError,
|
|
388
417
|
trimOrNull
|
|
389
418
|
} from "./chunk-JML7WKWU.js";
|
|
419
|
+
import {
|
|
420
|
+
createAppToolRuntimeExecutor,
|
|
421
|
+
dispatchAppTool,
|
|
422
|
+
outcomeStatus
|
|
423
|
+
} from "./chunk-UOAYS72M.js";
|
|
390
424
|
import {
|
|
391
425
|
APP_TOOL_NAMES,
|
|
392
426
|
ToolInputError,
|
|
393
427
|
buildAppToolOpenAITools,
|
|
394
|
-
createAppToolRuntimeExecutor,
|
|
395
428
|
customToolToOpenAI,
|
|
396
429
|
defineAppTool,
|
|
397
|
-
dispatchAppTool,
|
|
398
430
|
findCustomTool,
|
|
399
|
-
isAppToolName
|
|
400
|
-
|
|
401
|
-
} from "./chunk-7CTIUCQ4.js";
|
|
431
|
+
isAppToolName
|
|
432
|
+
} from "./chunk-YEFFHORB.js";
|
|
402
433
|
import {
|
|
403
434
|
__resetCatalogCache,
|
|
404
435
|
buildCatalog,
|
|
@@ -440,6 +471,7 @@ export {
|
|
|
440
471
|
DurableChatUnavailableError,
|
|
441
472
|
ENV_TOTAL_MAX_BYTES,
|
|
442
473
|
ENV_VALUE_MAX_BYTES,
|
|
474
|
+
EVIDENCE_COVERAGE_CHECK,
|
|
443
475
|
EmailContentSchema,
|
|
444
476
|
HubExecClient,
|
|
445
477
|
INTERACTION_CANCEL_EVENT,
|
|
@@ -449,6 +481,7 @@ export {
|
|
|
449
481
|
InMemoryDurableChatStateStore,
|
|
450
482
|
InMemoryDurableChatStore,
|
|
451
483
|
KNOWN_HARNESSES,
|
|
484
|
+
MAX_WORK_PRODUCT_BATCH,
|
|
452
485
|
MCP_PROTOCOL_VERSIONS,
|
|
453
486
|
MISSING_TOOL_TERMINAL_ERROR,
|
|
454
487
|
MISSING_TOOL_TERMINAL_REASON,
|
|
@@ -505,8 +538,10 @@ export {
|
|
|
505
538
|
buildSandboxToolPathSetupScript,
|
|
506
539
|
buildScopedMcpServerEntry,
|
|
507
540
|
buildUserTextParts,
|
|
541
|
+
buildWorkProductTools,
|
|
508
542
|
canTransitionInteractionStatus,
|
|
509
543
|
canTransitionPlanStatus,
|
|
544
|
+
canTransitionWorkProduct,
|
|
510
545
|
cancelStatusFor,
|
|
511
546
|
checkRateLimit,
|
|
512
547
|
checkThemeContract,
|
|
@@ -538,6 +573,7 @@ export {
|
|
|
538
573
|
createFieldCrypto,
|
|
539
574
|
createInMemoryDurableChatStateStore,
|
|
540
575
|
createInMemoryMissionStore,
|
|
576
|
+
createInMemoryWorkProductStore,
|
|
541
577
|
createInteractionAnswerRoute,
|
|
542
578
|
createKnowledgeLoop,
|
|
543
579
|
createLlmCorrectnessChecker,
|
|
@@ -561,6 +597,8 @@ export {
|
|
|
561
597
|
createTangleRouterModelConfig,
|
|
562
598
|
createTcloudKeyProvisioner,
|
|
563
599
|
createTokenRecallChecker,
|
|
600
|
+
createWorkProductRoutes,
|
|
601
|
+
createWorkProductService,
|
|
564
602
|
createWorkspaceKeyManager,
|
|
565
603
|
createWorkspaceSandboxConnectionHandler,
|
|
566
604
|
createWorkspaceSandboxManager,
|
|
@@ -600,6 +638,7 @@ export {
|
|
|
600
638
|
fieldAcceptsFreeText,
|
|
601
639
|
finalizeAssistantParts,
|
|
602
640
|
finalizePendingInteractionParts,
|
|
641
|
+
finalizeWorkProductProvenance,
|
|
603
642
|
findCustomTool,
|
|
604
643
|
flattenHistory,
|
|
605
644
|
formatPreflightReport,
|
|
@@ -620,6 +659,7 @@ export {
|
|
|
620
659
|
isChatStepFinishPart,
|
|
621
660
|
isChatTextPart,
|
|
622
661
|
isChatToolPart,
|
|
662
|
+
isChatWorkProductPart,
|
|
623
663
|
isHarness,
|
|
624
664
|
isMissionStopRequested,
|
|
625
665
|
isMissionTerminal,
|
|
@@ -631,6 +671,8 @@ export {
|
|
|
631
671
|
isTangleExecutionKeyError,
|
|
632
672
|
isTerminalInteractionStatus,
|
|
633
673
|
isTerminalPromptEvent,
|
|
674
|
+
isWorkProductStatus,
|
|
675
|
+
isWorkProductTerminal,
|
|
634
676
|
lightTheme,
|
|
635
677
|
listSessionInteractions,
|
|
636
678
|
loopTraceEventsToFlowSpans,
|
|
@@ -659,17 +701,23 @@ export {
|
|
|
659
701
|
noticePartKey,
|
|
660
702
|
objectKey,
|
|
661
703
|
outcomeStatus,
|
|
704
|
+
parseAgentCheckInput,
|
|
705
|
+
parseArtifactInput,
|
|
662
706
|
parseAssetSpec,
|
|
707
|
+
parseEvidenceInput,
|
|
708
|
+
parseExceptionInput,
|
|
663
709
|
parseInteractionAnswers,
|
|
664
710
|
parseInteractionCancel,
|
|
665
711
|
parseInteractionRequest,
|
|
666
712
|
parseJsonObjectBody,
|
|
667
713
|
parseMissionBlocks,
|
|
668
714
|
parsePlanSubmittedEvent,
|
|
715
|
+
parseReviewQueueItem,
|
|
669
716
|
parseSessionStreamEnvelope,
|
|
670
717
|
peekWorkspaceSandbox,
|
|
671
718
|
persistedPartToInteraction,
|
|
672
719
|
persistedPartToPlan,
|
|
720
|
+
persistedPartToWorkProduct,
|
|
673
721
|
planAuthorityIdempotencyKey,
|
|
674
722
|
planCommandKey,
|
|
675
723
|
planEffectKey,
|
|
@@ -678,6 +726,7 @@ export {
|
|
|
678
726
|
planRevisionKey,
|
|
679
727
|
planToPersistedPart,
|
|
680
728
|
producedFromToolEvents,
|
|
729
|
+
projectReviewQueue,
|
|
681
730
|
pumpBufferedTurn,
|
|
682
731
|
questionInteractionContentSignature,
|
|
683
732
|
readCookieValue,
|
|
@@ -729,6 +778,7 @@ export {
|
|
|
729
778
|
splitDeferredProfileFiles,
|
|
730
779
|
stablePlanReceipt,
|
|
731
780
|
stampInteractionAnswers,
|
|
781
|
+
stampProvenance,
|
|
732
782
|
statSandboxFileSize,
|
|
733
783
|
stepActivityFlowTrace,
|
|
734
784
|
stepAgentActivity,
|
|
@@ -753,8 +803,10 @@ export {
|
|
|
753
803
|
toLoopEvents,
|
|
754
804
|
traceEnv,
|
|
755
805
|
trimOrNull,
|
|
806
|
+
unresolvedBlockingExceptions,
|
|
756
807
|
upsertDurableInteractionAsk,
|
|
757
808
|
validateInteractionAnswerBody,
|
|
809
|
+
validateWorkProductVerdictBody,
|
|
758
810
|
verifyCapabilityToken,
|
|
759
811
|
verifyCompletion,
|
|
760
812
|
verifyExpiringCapabilityToken,
|
|
@@ -763,6 +815,8 @@ export {
|
|
|
763
815
|
verifyTerminalProxyToken,
|
|
764
816
|
volumeGateProposalId,
|
|
765
817
|
weightedComposite,
|
|
818
|
+
workProductToPersistedPart,
|
|
819
|
+
workProductTrustInputs,
|
|
766
820
|
writeProfileFilesToBox
|
|
767
821
|
};
|
|
768
822
|
//# sourceMappingURL=index.js.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Part } from '@tangle-network/agent-interface';
|
|
2
2
|
import { b as ChatInteractionField, c as ChatInteractionStatus, i as InteractionAnswers, N as NoticeKind } from './contract-B3h7peV3.js';
|
|
3
|
+
import { g as WorkProductPersistedPart } from './types-CEchbvgz.js';
|
|
3
4
|
import { ChatPlanPersistedPart } from './plans/index.js';
|
|
4
5
|
|
|
5
6
|
/**
|
|
@@ -300,6 +301,11 @@ declare function parseChatTurnParts(raw: unknown): ChatTurnFilePartInput[];
|
|
|
300
301
|
* and field shapes.
|
|
301
302
|
* - `plan`: the durable-plan projection in `/plans`, derived from the sandbox
|
|
302
303
|
* SDK's authoritative plan lifecycle.
|
|
304
|
+
* - `work_product`: the persisted work-product anchor card in
|
|
305
|
+
* `/work-product`'s contract (`workProductToPersistedPart` /
|
|
306
|
+
* `persistedPartToWorkProduct`) — SYSTEM-authored on the ready transition
|
|
307
|
+
* and updated on a reviewer verdict; no prompt teaches an agent to author
|
|
308
|
+
* one.
|
|
303
309
|
* - `mention`: an `@`-picked reference to a file that already lives in the
|
|
304
310
|
* workspace sandbox (`FileMention` in `/chat-routes`'s wire contract, plus
|
|
305
311
|
* the image/file discriminant). Neither transport lane produces it — the
|
|
@@ -439,6 +445,11 @@ interface ChatInteractionPart {
|
|
|
439
445
|
}
|
|
440
446
|
/** Resolve a chat plan part by aliasing it to the persisted chat plan part type */
|
|
441
447
|
type ChatPlanPart = ChatPlanPersistedPart;
|
|
448
|
+
/** Persisted work-product anchor card — byte-matches
|
|
449
|
+
* `workProductToPersistedPart` in `/work-product`'s contract. Written by the
|
|
450
|
+
* PLATFORM on the ready transition (and updated on a verdict); never
|
|
451
|
+
* authored by a prompt. */
|
|
452
|
+
type ChatWorkProductPart = WorkProductPersistedPart;
|
|
442
453
|
/** Persisted one-line transcript notice — byte-matches `noticePart` in
|
|
443
454
|
* `/web-react`'s chat-interactions contract. */
|
|
444
455
|
interface ChatNoticePart {
|
|
@@ -468,7 +479,7 @@ interface ChatMentionPart {
|
|
|
468
479
|
turnId?: string;
|
|
469
480
|
}
|
|
470
481
|
/** Represent parts of a chat message including text, reasoning, tools, files, images, subtasks, steps, interactions, notices, plans, and mentions */
|
|
471
|
-
type ChatMessagePart = ChatTextPart | ChatReasoningPart | ChatToolPart | ChatFilePart | ChatImagePart | ChatSubtaskPart | ChatStepStartPart | ChatStepFinishPart | ChatInteractionPart | ChatNoticePart | ChatPlanPart | ChatMentionPart;
|
|
482
|
+
type ChatMessagePart = ChatTextPart | ChatReasoningPart | ChatToolPart | ChatFilePart | ChatImagePart | ChatSubtaskPart | ChatStepStartPart | ChatStepFinishPart | ChatInteractionPart | ChatNoticePart | ChatPlanPart | ChatWorkProductPart | ChatMentionPart;
|
|
472
483
|
/** Every canonical harness wire-part kind must be storable — compile-time
|
|
473
484
|
* guarantee that a new agent-interface part kind cannot silently fall out of
|
|
474
485
|
* the persisted vocabulary. */
|
|
@@ -492,6 +503,8 @@ declare function isChatTextPart(part: ChatMessagePart): part is ChatTextPart;
|
|
|
492
503
|
declare function isChatInteractionPart(part: ChatMessagePart): part is ChatInteractionPart;
|
|
493
504
|
/** Resolve whether a chat message part is a persisted chat plan part */
|
|
494
505
|
declare function isChatPlanPart(part: ChatMessagePart): part is ChatPlanPart;
|
|
506
|
+
/** Resolve whether a chat message part is a persisted work-product anchor */
|
|
507
|
+
declare function isChatWorkProductPart(part: ChatMessagePart): part is ChatWorkProductPart;
|
|
495
508
|
/** Determine if a chat message part represents the completion of a chat step */
|
|
496
509
|
declare function isChatStepFinishPart(part: ChatMessagePart): part is ChatStepFinishPart;
|
|
497
510
|
/** Widened to `unknown` — unlike its siblings this guard also runs over raw
|
|
@@ -594,4 +607,4 @@ declare function historyContentWithAttachments(message: {
|
|
|
594
607
|
parts?: ReadonlyArray<Record<string, unknown>> | null;
|
|
595
608
|
}, header?: string): string;
|
|
596
609
|
|
|
597
|
-
export { type
|
|
610
|
+
export { type ProducerErrorEvent as $, isChatInteractionPart as A, isChatMentionPart as B, type ChatAttachmentKind as C, DEFAULT_ATTACHMENT_PROMPT_HEADER as D, isChatPlanPart as E, isChatStepFinishPart as F, isChatTextPart as G, isChatToolPart as H, isChatWorkProductPart as I, mentionInputToPart as J, mentionPartsFromMessageParts as K, toChatMessageParts as L, type FileMention as M, type ChatTurnRequestPayload as N, type ChatTurnPartInput as O, type ChatTurnFilePartInput as P, type ChatAttachmentInput as Q, ChatTurnInputError as R, type StorableHarnessPartKind as S, type ChatTurnTextPartInput as T, DISPATCH_MAX_MEDIA_PARTS as U, DISPATCH_MAX_PARTS as V, DISPATCH_REQUEST_MAX_BYTES as W, DISPATCH_STRUCTURAL_RESERVE_BYTES as X, type FileMentionsToPartsOptions as Y, INLINE_PARTS_MAX_BYTES as Z, MENTION_MAX_COUNT as _, type ChatAttachmentPart as a, type ProducerNoticeEvent as a0, type ProducerPassthroughEvent as a1, type ProducerPassthroughEventType as a2, type ProducerReasoningEvent as a3, type ProducerTextEvent as a4, type ProducerToolCallEvent as a5, type ProducerToolResultEvent as a6, type ProducerUsageEvent as a7, type ProducerWireEvent as a8, type SandboxMentionPathCheck as a9, assertPromptPartsWithinCap as aa, base64WireLen as ab, buildMentionPromptBlock as ac, chatTurnRequestInit as ad, fileMentionsToParts as ae, formatBytes as af, mediaTypeForMentionPath as ag, mentionKindForPath as ah, parseChatTurnParts as ai, parseFileMentions as aj, promptPartsByteSize as ak, validateSandboxMentionPath as al, type ChatFilePart as b, type ChatImagePart as c, type ChatInteractionPart as d, type ChatMentionKind as e, type ChatMentionPart as f, type ChatMessagePart as g, type ChatNoticePart as h, type ChatPartTime as i, type ChatPlanPart as j, type ChatReasoningPart as k, type ChatStepFinishPart as l, type ChatStepStartPart as m, type ChatSubtaskPart as n, type ChatTextPart as o, type ChatToolPart as p, type ChatToolState as q, type ChatToolStatus as r, type ChatUsageTokens as s, type ChatWorkProductPart as t, attachmentInputToPart as u, attachmentKindForMime as v, attachmentPartsFromMessageParts as w, buildAttachmentPromptBlock as x, historyContentWithAttachments as y, isChatAttachmentPart as z };
|