@ifc-lite/ids-agent 0.0.0-stage → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +373 -0
- package/README.md +144 -2
- package/dist/bridges.d.ts +163 -0
- package/dist/bridges.d.ts.map +1 -0
- package/dist/bridges.js +6 -0
- package/dist/bridges.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +26 -0
- package/dist/index.js.map +1 -0
- package/dist/modes.d.ts +30 -0
- package/dist/modes.d.ts.map +1 -0
- package/dist/modes.js +34 -0
- package/dist/modes.js.map +1 -0
- package/dist/prompts/system-v1.d.ts +19 -0
- package/dist/prompts/system-v1.d.ts.map +1 -0
- package/dist/prompts/system-v1.js +43 -0
- package/dist/prompts/system-v1.js.map +1 -0
- package/dist/proposal/proposal.d.ts +72 -0
- package/dist/proposal/proposal.d.ts.map +1 -0
- package/dist/proposal/proposal.js +60 -0
- package/dist/proposal/proposal.js.map +1 -0
- package/dist/proposal/view-model.d.ts +66 -0
- package/dist/proposal/view-model.d.ts.map +1 -0
- package/dist/proposal/view-model.js +94 -0
- package/dist/proposal/view-model.js.map +1 -0
- package/dist/providers/anthropic.d.ts +45 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +107 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/openai.d.ts +60 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +92 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/runner/context.d.ts +21 -0
- package/dist/runner/context.d.ts.map +1 -0
- package/dist/runner/context.js +25 -0
- package/dist/runner/context.js.map +1 -0
- package/dist/runner/loop.d.ts +96 -0
- package/dist/runner/loop.d.ts.map +1 -0
- package/dist/runner/loop.js +194 -0
- package/dist/runner/loop.js.map +1 -0
- package/dist/runner/privacy.d.ts +71 -0
- package/dist/runner/privacy.d.ts.map +1 -0
- package/dist/runner/privacy.js +72 -0
- package/dist/runner/privacy.js.map +1 -0
- package/dist/runner/receipt.d.ts +48 -0
- package/dist/runner/receipt.d.ts.map +1 -0
- package/dist/runner/receipt.js +29 -0
- package/dist/runner/receipt.js.map +1 -0
- package/dist/sandbox/handles.d.ts +22 -0
- package/dist/sandbox/handles.d.ts.map +1 -0
- package/dist/sandbox/handles.js +67 -0
- package/dist/sandbox/handles.js.map +1 -0
- package/dist/sandbox/nodes.d.ts +11 -0
- package/dist/sandbox/nodes.d.ts.map +1 -0
- package/dist/sandbox/nodes.js +38 -0
- package/dist/sandbox/nodes.js.map +1 -0
- package/dist/sandbox/sandbox.d.ts +110 -0
- package/dist/sandbox/sandbox.d.ts.map +1 -0
- package/dist/sandbox/sandbox.js +125 -0
- package/dist/sandbox/sandbox.js.map +1 -0
- package/dist/testing/doubles.d.ts +20 -0
- package/dist/testing/doubles.d.ts.map +1 -0
- package/dist/testing/doubles.js +105 -0
- package/dist/testing/doubles.js.map +1 -0
- package/dist/testing/index.d.ts +8 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +11 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/transports.d.ts +48 -0
- package/dist/testing/transports.d.ts.map +1 -0
- package/dist/testing/transports.js +70 -0
- package/dist/testing/transports.js.map +1 -0
- package/dist/tools/act-tools.d.ts +13 -0
- package/dist/tools/act-tools.d.ts.map +1 -0
- package/dist/tools/act-tools.js +115 -0
- package/dist/tools/act-tools.js.map +1 -0
- package/dist/tools/ask-user.d.ts +3 -0
- package/dist/tools/ask-user.d.ts.map +1 -0
- package/dist/tools/ask-user.js +62 -0
- package/dist/tools/ask-user.js.map +1 -0
- package/dist/tools/bsdd-tools.d.ts +8 -0
- package/dist/tools/bsdd-tools.d.ts.map +1 -0
- package/dist/tools/bsdd-tools.js +64 -0
- package/dist/tools/bsdd-tools.js.map +1 -0
- package/dist/tools/context.d.ts +27 -0
- package/dist/tools/context.d.ts.map +1 -0
- package/dist/tools/context.js +21 -0
- package/dist/tools/context.js.map +1 -0
- package/dist/tools/ids-read.d.ts +26 -0
- package/dist/tools/ids-read.d.ts.map +1 -0
- package/dist/tools/ids-read.js +74 -0
- package/dist/tools/ids-read.js.map +1 -0
- package/dist/tools/index.d.ts +11 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +22 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/model-tools.d.ts +3 -0
- package/dist/tools/model-tools.d.ts.map +1 -0
- package/dist/tools/model-tools.js +100 -0
- package/dist/tools/model-tools.js.map +1 -0
- package/dist/tools/op-schema.d.ts +23 -0
- package/dist/tools/op-schema.d.ts.map +1 -0
- package/dist/tools/op-schema.js +57 -0
- package/dist/tools/op-schema.js.map +1 -0
- package/dist/tools/rank.d.ts +3 -0
- package/dist/tools/rank.d.ts.map +1 -0
- package/dist/tools/rank.js +66 -0
- package/dist/tools/rank.js.map +1 -0
- package/dist/tools/registry.d.ts +59 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +61 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/schema-tools.d.ts +3 -0
- package/dist/tools/schema-tools.d.ts.map +1 -0
- package/dist/tools/schema-tools.js +127 -0
- package/dist/tools/schema-tools.js.map +1 -0
- package/dist/worker-bridge.d.ts +47 -0
- package/dist/worker-bridge.d.ts.map +1 -0
- package/dist/worker-bridge.js +97 -0
- package/dist/worker-bridge.js.map +1 -0
- package/package.json +79 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/runner/loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "What was sent" (FR-F08, IDS-086): the exact payload of every request of a
|
|
3
|
+
* run, as view data a UI renders without interpretation.
|
|
4
|
+
*
|
|
5
|
+
* The loop records, before each request, the system prompt, the context
|
|
6
|
+
* block, the tools offered and how many conversation messages went with it.
|
|
7
|
+
* The conversation is append-only, so request N sent messages
|
|
8
|
+
* `transcript[0..count)`; the view shows each request's NEW messages and
|
|
9
|
+
* states that earlier ones were resent. Tool results are attributed to the
|
|
10
|
+
* tool that produced them, so the view can say plainly whether any data from
|
|
11
|
+
* the loaded models left the browser.
|
|
12
|
+
*/
|
|
13
|
+
import type { ToolTurnMessage } from '@ifc-lite/ai';
|
|
14
|
+
export interface SentRequest {
|
|
15
|
+
index: number;
|
|
16
|
+
/** Epoch ms. */
|
|
17
|
+
at: number;
|
|
18
|
+
model: string;
|
|
19
|
+
route: string;
|
|
20
|
+
promptVersion: string;
|
|
21
|
+
system: string;
|
|
22
|
+
/** The context block, by part (document summary, each attachment), joined in order when sent. */
|
|
23
|
+
context: readonly ContextPart[];
|
|
24
|
+
/** Messages of the transcript sent with this request (a prefix of it). */
|
|
25
|
+
messageCount: number;
|
|
26
|
+
toolNames: string[];
|
|
27
|
+
}
|
|
28
|
+
export interface ContextPart {
|
|
29
|
+
source: 'document' | 'attachments' | 'model-data';
|
|
30
|
+
label: string;
|
|
31
|
+
text: string;
|
|
32
|
+
}
|
|
33
|
+
export type PrivacySource = 'instructions' | 'document' | 'request' | 'attachments' | 'model-data' | 'schema' | 'bsdd' | 'assistant' | 'other';
|
|
34
|
+
export interface PrivacyEntry {
|
|
35
|
+
source: PrivacySource;
|
|
36
|
+
label: string;
|
|
37
|
+
chars: number;
|
|
38
|
+
/** The exact text that was sent. */
|
|
39
|
+
text: string;
|
|
40
|
+
}
|
|
41
|
+
export interface PrivacyRequestView {
|
|
42
|
+
index: number;
|
|
43
|
+
at: number;
|
|
44
|
+
model: string;
|
|
45
|
+
route: string;
|
|
46
|
+
promptVersion: string;
|
|
47
|
+
/** Entries sent for the first time with this request. */
|
|
48
|
+
entries: PrivacyEntry[];
|
|
49
|
+
/** Messages resent from earlier requests (the API is stateless). */
|
|
50
|
+
resentMessages: number;
|
|
51
|
+
toolNames: string[];
|
|
52
|
+
}
|
|
53
|
+
export interface PrivacyView {
|
|
54
|
+
requests: PrivacyRequestView[];
|
|
55
|
+
/** Characters sent per source, counting each piece once. */
|
|
56
|
+
totals: Record<PrivacySource, number>;
|
|
57
|
+
/** True when any model-tool result (counts, values, class statistics) was sent. */
|
|
58
|
+
modelDataSent: boolean;
|
|
59
|
+
payloadDigest: string;
|
|
60
|
+
}
|
|
61
|
+
/** Build the privacy view of a run from what the loop recorded. */
|
|
62
|
+
export declare function privacyView(run: {
|
|
63
|
+
sent: readonly SentRequest[];
|
|
64
|
+
transcript: readonly ToolTurnMessage[];
|
|
65
|
+
proposal: {
|
|
66
|
+
receipt: {
|
|
67
|
+
payloadDigest: string;
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
}): PrivacyView;
|
|
71
|
+
//# sourceMappingURL=privacy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy.d.ts","sourceRoot":"","sources":["../../src/runner/privacy.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAgB,eAAe,EAAE,MAAM,cAAc,CAAC;AAElE,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,iGAAiG;IACjG,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC,0EAA0E;IAC1E,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,YAAY,CAAC;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAC;AAE/I,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,yDAAyD;IACzD,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,oEAAoE;IACpE,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IACtC,mFAAmF;IACnF,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB;AA+BD,mEAAmE;AACnE,wBAAgB,WAAW,CAAC,GAAG,EAAE;IAAE,IAAI,EAAE,SAAS,WAAW,EAAE,CAAC;IAAC,UAAU,EAAE,SAAS,eAAe,EAAE,CAAC;IAAC,QAAQ,EAAE;QAAE,OAAO,EAAE;YAAE,aAAa,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,GAAG,WAAW,CA4BxK"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
function sourceOfTool(name) {
|
|
5
|
+
if (!name)
|
|
6
|
+
return 'other';
|
|
7
|
+
if (name.startsWith('model_'))
|
|
8
|
+
return 'model-data';
|
|
9
|
+
if (name.startsWith('schema_'))
|
|
10
|
+
return 'schema';
|
|
11
|
+
if (name.startsWith('bsdd_'))
|
|
12
|
+
return 'bsdd';
|
|
13
|
+
if (name.startsWith('ids_'))
|
|
14
|
+
return 'document';
|
|
15
|
+
return 'other';
|
|
16
|
+
}
|
|
17
|
+
function blockText(block) {
|
|
18
|
+
if (block.type === 'text')
|
|
19
|
+
return block.text;
|
|
20
|
+
if (block.type === 'tool_call')
|
|
21
|
+
return `${block.name}(${block.rawInput ?? JSON.stringify(block.input)})`;
|
|
22
|
+
return `[${block.provider} block sent back unchanged]`;
|
|
23
|
+
}
|
|
24
|
+
function entriesOf(message, toolNames, first) {
|
|
25
|
+
if (message.role === 'user') {
|
|
26
|
+
return [{ source: 'request', label: first ? 'Your request' : 'Message', chars: message.content.length, text: message.content }];
|
|
27
|
+
}
|
|
28
|
+
if (message.role === 'assistant') {
|
|
29
|
+
const text = message.content.map(blockText).join('\n');
|
|
30
|
+
return [{ source: 'assistant', label: 'Earlier model output (sent back)', chars: text.length, text }];
|
|
31
|
+
}
|
|
32
|
+
return message.results.map((r) => {
|
|
33
|
+
const name = toolNames.get(r.callId);
|
|
34
|
+
return { source: sourceOfTool(name), label: `Result of ${name ?? 'a tool'}${r.isError ? ' (error)' : ''}`, chars: r.content.length, text: r.content };
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/** Build the privacy view of a run from what the loop recorded. */
|
|
38
|
+
export function privacyView(run) {
|
|
39
|
+
const toolNames = new Map();
|
|
40
|
+
for (const m of run.transcript) {
|
|
41
|
+
if (m.role === 'assistant')
|
|
42
|
+
for (const b of m.content)
|
|
43
|
+
if (b.type === 'tool_call')
|
|
44
|
+
toolNames.set(b.id, b.name);
|
|
45
|
+
}
|
|
46
|
+
const totals = {
|
|
47
|
+
instructions: 0, document: 0, request: 0, attachments: 0, 'model-data': 0, schema: 0, bsdd: 0, assistant: 0, other: 0,
|
|
48
|
+
};
|
|
49
|
+
let previous = null;
|
|
50
|
+
const requests = run.sent.map((sent) => {
|
|
51
|
+
const entries = [];
|
|
52
|
+
if (!previous || previous.system !== sent.system) {
|
|
53
|
+
entries.push({ source: 'instructions', label: `System prompt (${sent.promptVersion})`, chars: sent.system.length, text: sent.system });
|
|
54
|
+
}
|
|
55
|
+
if (!previous || previous.context !== sent.context) {
|
|
56
|
+
for (const part of sent.context)
|
|
57
|
+
entries.push({ source: part.source, label: part.label, chars: part.text.length, text: part.text });
|
|
58
|
+
}
|
|
59
|
+
const from = previous?.messageCount ?? 0;
|
|
60
|
+
run.transcript.slice(from, sent.messageCount).forEach((m, i) => entries.push(...entriesOf(m, toolNames, from + i === 0)));
|
|
61
|
+
for (const e of entries)
|
|
62
|
+
totals[e.source] += e.chars;
|
|
63
|
+
const view = {
|
|
64
|
+
index: sent.index, at: sent.at, model: sent.model, route: sent.route, promptVersion: sent.promptVersion,
|
|
65
|
+
entries, resentMessages: from, toolNames: sent.toolNames,
|
|
66
|
+
};
|
|
67
|
+
previous = sent;
|
|
68
|
+
return view;
|
|
69
|
+
});
|
|
70
|
+
return { requests, totals, modelDataSent: totals['model-data'] > 0, payloadDigest: run.proposal.receipt.payloadDigest };
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=privacy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"privacy.js","sourceRoot":"","sources":["../../src/runner/privacy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The run receipt (`06-ai-agent.md` §4): model, prompt version, every
|
|
3
|
+
* request's usage receipt from `@ifc-lite/ai`, every tool call, totals, an
|
|
4
|
+
* optional cost and a digest of exactly what was sent. Like the request
|
|
5
|
+
* receipts it is built from, it holds no prompt, no reply and no
|
|
6
|
+
* credential: the digest lets a privacy view prove which payload a receipt
|
|
7
|
+
* describes without the receipt carrying it.
|
|
8
|
+
*/
|
|
9
|
+
import type { UsageReceipt } from '@ifc-lite/ai';
|
|
10
|
+
import type { AgentMode } from '../prompts/system-v1.js';
|
|
11
|
+
export interface ToolCallRecord {
|
|
12
|
+
/** Index of the request whose turn made the call. */
|
|
13
|
+
turn: number;
|
|
14
|
+
name: string;
|
|
15
|
+
ok: boolean;
|
|
16
|
+
/** One line; never document content. */
|
|
17
|
+
summary: string;
|
|
18
|
+
ms: number;
|
|
19
|
+
}
|
|
20
|
+
/** USD per million tokens, supplied by the host (prices change; the package ships none). */
|
|
21
|
+
export interface ModelPricing {
|
|
22
|
+
inputPerMTok: number;
|
|
23
|
+
outputPerMTok: number;
|
|
24
|
+
}
|
|
25
|
+
export interface RunReceipt {
|
|
26
|
+
runId: string;
|
|
27
|
+
mode: AgentMode;
|
|
28
|
+
model: string;
|
|
29
|
+
promptVersion: string;
|
|
30
|
+
requests: UsageReceipt[];
|
|
31
|
+
toolCalls: ToolCallRecord[];
|
|
32
|
+
totals: {
|
|
33
|
+
requests: number;
|
|
34
|
+
inputTokens: number;
|
|
35
|
+
outputTokens: number;
|
|
36
|
+
/** False when any request did not report usage: the totals are then a lower bound. */
|
|
37
|
+
usageComplete: boolean;
|
|
38
|
+
};
|
|
39
|
+
/** Present when the host supplied pricing; computed from reported tokens only. */
|
|
40
|
+
costUsd?: number;
|
|
41
|
+
/** SHA-256 (hex) of the canonical JSON of every request payload, in order. */
|
|
42
|
+
payloadDigest: string;
|
|
43
|
+
}
|
|
44
|
+
export declare function totalsOf(requests: readonly UsageReceipt[]): RunReceipt['totals'];
|
|
45
|
+
export declare function costOf(totals: RunReceipt['totals'], pricing: ModelPricing): number;
|
|
46
|
+
/** Hex SHA-256 of a UTF-8 string (Web Crypto: browsers and Node 20+). */
|
|
47
|
+
export declare function sha256Hex(text: string): Promise<string>;
|
|
48
|
+
//# sourceMappingURL=receipt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"receipt.d.ts","sourceRoot":"","sources":["../../src/runner/receipt.ts"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,MAAM,WAAW,cAAc;IAC7B,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,wCAAwC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,4FAA4F;AAC5F,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,MAAM,EAAE;QACN,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,sFAAsF;QACtF,aAAa,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,SAAS,YAAY,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,CAahF;AAED,wBAAgB,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,MAAM,CAGlF;AAED,yEAAyE;AACzE,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI7D"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
export function totalsOf(requests) {
|
|
5
|
+
let inputTokens = 0;
|
|
6
|
+
let outputTokens = 0;
|
|
7
|
+
let usageComplete = true;
|
|
8
|
+
for (const r of requests) {
|
|
9
|
+
if (r.usageReported) {
|
|
10
|
+
inputTokens += r.inputTokens;
|
|
11
|
+
outputTokens += r.outputTokens;
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
usageComplete = false;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return { requests: requests.length, inputTokens, outputTokens, usageComplete };
|
|
18
|
+
}
|
|
19
|
+
export function costOf(totals, pricing) {
|
|
20
|
+
const usd = (totals.inputTokens * pricing.inputPerMTok + totals.outputTokens * pricing.outputPerMTok) / 1_000_000;
|
|
21
|
+
return Math.round(usd * 1_000_000) / 1_000_000;
|
|
22
|
+
}
|
|
23
|
+
/** Hex SHA-256 of a UTF-8 string (Web Crypto: browsers and Node 20+). */
|
|
24
|
+
export async function sha256Hex(text) {
|
|
25
|
+
const bytes = new TextEncoder().encode(text);
|
|
26
|
+
const digest = await globalThis.crypto.subtle.digest('SHA-256', bytes);
|
|
27
|
+
return [...new Uint8Array(digest)].map((b) => b.toString(16).padStart(2, '0')).join('');
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=receipt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"receipt.js","sourceRoot":"","sources":["../../src/runner/receipt.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAkD/D,MAAM,UAAU,QAAQ,CAAC,QAAiC;IACxD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,aAAa,GAAG,IAAI,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC;YACpB,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC;YAC7B,YAAY,IAAI,CAAC,CAAC,YAAY,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,aAAa,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,MAA4B,EAAE,OAAqB;IACxE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;IAClH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;AACjD,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY;IAC1C,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1F,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Node handles: the model names a node it creates with `@name` instead of
|
|
3
|
+
* inventing a UUID (`"specId": "@doors"`), and refers to it the same way in
|
|
4
|
+
* later ops of the same run. The sandbox replaces every handle with a UUID
|
|
5
|
+
* derived from the run id and the handle, so the mapping is stable across
|
|
6
|
+
* tool calls and reproducible in a replayed run. Missing `opId`s are filled
|
|
7
|
+
* the same way.
|
|
8
|
+
*
|
|
9
|
+
* Only id-typed positions are rewritten (keys ending in `Id`/`Ids`, `scope`
|
|
10
|
+
* and the values of `constraintIds`), so a literal value such as `"@home"`
|
|
11
|
+
* in a property value is never touched.
|
|
12
|
+
*/
|
|
13
|
+
import { type Uuid } from '@ifc-lite/ids-authoring';
|
|
14
|
+
export declare const HANDLE_PATTERN = "^@[A-Za-z][A-Za-z0-9_-]{0,47}$";
|
|
15
|
+
export interface HandleTable {
|
|
16
|
+
/** Handle → UUID, for every handle seen in the run. */
|
|
17
|
+
readonly handles: ReadonlyMap<string, Uuid>;
|
|
18
|
+
/** Resolve handles and fill missing op ids in a batch of untrusted ops. */
|
|
19
|
+
resolve(ops: readonly unknown[]): unknown[];
|
|
20
|
+
}
|
|
21
|
+
export declare function createHandleTable(runId: string): HandleTable;
|
|
22
|
+
//# sourceMappingURL=handles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handles.d.ts","sourceRoot":"","sources":["../../src/sandbox/handles.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAY,KAAK,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE9D,eAAO,MAAM,cAAc,mCAAmC,CAAC;AAG/D,MAAM,WAAW,WAAW;IAC1B,uDAAuD;IACvD,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5C,2EAA2E;IAC3E,OAAO,CAAC,GAAG,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;CAC7C;AAUD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAqC5D"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/**
|
|
5
|
+
* Node handles: the model names a node it creates with `@name` instead of
|
|
6
|
+
* inventing a UUID (`"specId": "@doors"`), and refers to it the same way in
|
|
7
|
+
* later ops of the same run. The sandbox replaces every handle with a UUID
|
|
8
|
+
* derived from the run id and the handle, so the mapping is stable across
|
|
9
|
+
* tool calls and reproducible in a replayed run. Missing `opId`s are filled
|
|
10
|
+
* the same way.
|
|
11
|
+
*
|
|
12
|
+
* Only id-typed positions are rewritten (keys ending in `Id`/`Ids`, `scope`
|
|
13
|
+
* and the values of `constraintIds`), so a literal value such as `"@home"`
|
|
14
|
+
* in a property value is never touched.
|
|
15
|
+
*/
|
|
16
|
+
import { deriveId } from '@ifc-lite/ids-authoring';
|
|
17
|
+
export const HANDLE_PATTERN = '^@[A-Za-z][A-Za-z0-9_-]{0,47}$';
|
|
18
|
+
const HANDLE = new RegExp(HANDLE_PATTERN);
|
|
19
|
+
function isRecord(value) {
|
|
20
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
21
|
+
}
|
|
22
|
+
function isIdKey(key) {
|
|
23
|
+
return key.endsWith('Id') || key.endsWith('Ids') || key === 'scope';
|
|
24
|
+
}
|
|
25
|
+
export function createHandleTable(runId) {
|
|
26
|
+
const handles = new Map();
|
|
27
|
+
let opCounter = 0;
|
|
28
|
+
const idFor = (value) => {
|
|
29
|
+
if (typeof value !== 'string' || !HANDLE.test(value))
|
|
30
|
+
return value;
|
|
31
|
+
let id = handles.get(value);
|
|
32
|
+
if (!id) {
|
|
33
|
+
id = deriveId(`ids-agent|${runId}`, `handle|${value}`);
|
|
34
|
+
handles.set(value, id);
|
|
35
|
+
}
|
|
36
|
+
return id;
|
|
37
|
+
};
|
|
38
|
+
const walk = (value, idPosition) => {
|
|
39
|
+
if (Array.isArray(value))
|
|
40
|
+
return value.map((item) => walk(item, idPosition));
|
|
41
|
+
if (!isRecord(value))
|
|
42
|
+
return idPosition ? idFor(value) : value;
|
|
43
|
+
const out = {};
|
|
44
|
+
for (const [key, child] of Object.entries(value)) {
|
|
45
|
+
if (key === 'constraintIds' && isRecord(child)) {
|
|
46
|
+
out[key] = Object.fromEntries(Object.entries(child).map(([field, id]) => [field, idFor(id)]));
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
out[key] = walk(child, isIdKey(key));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return out;
|
|
53
|
+
};
|
|
54
|
+
return {
|
|
55
|
+
handles,
|
|
56
|
+
resolve(ops) {
|
|
57
|
+
return ops.map((op) => {
|
|
58
|
+
const resolved = walk(op, false);
|
|
59
|
+
if (isRecord(resolved) && resolved.opId === undefined) {
|
|
60
|
+
resolved.opId = deriveId(`ids-agent|${runId}`, `op|${opCounter++}`);
|
|
61
|
+
}
|
|
62
|
+
return resolved;
|
|
63
|
+
});
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=handles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handles.js","sourceRoot":"","sources":["../../src/sandbox/handles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** Node bookkeeping shared by the sandbox, the tools and the proposal. */
|
|
2
|
+
import type { Diagnostic, StudioDocument, Uuid } from '@ifc-lite/ids-authoring';
|
|
3
|
+
/**
|
|
4
|
+
* A stable id for a diagnostic: rule code, node and field. Diagnostics carry
|
|
5
|
+
* no id of their own; this one survives re-linting, so the model can name a
|
|
6
|
+
* finding in `ids_apply_fix` after other edits.
|
|
7
|
+
*/
|
|
8
|
+
export declare function diagnosticId(d: Pick<Diagnostic, 'code' | 'nodeId' | 'field'>): string;
|
|
9
|
+
/** The specifications a set of touched nodes belongs to, before or after the change. */
|
|
10
|
+
export declare function specIdsFor(touched: Iterable<Uuid>, before: StudioDocument, after: StudioDocument): Uuid[];
|
|
11
|
+
//# sourceMappingURL=nodes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../src/sandbox/nodes.ts"],"names":[],"mappings":"AAIA,0EAA0E;AAE1E,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAEhF;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC,GAAG,MAAM,CAErF;AAeD,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,GAAG,IAAI,EAAE,CASzG"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
4
|
+
/**
|
|
5
|
+
* A stable id for a diagnostic: rule code, node and field. Diagnostics carry
|
|
6
|
+
* no id of their own; this one survives re-linting, so the model can name a
|
|
7
|
+
* finding in `ids_apply_fix` after other edits.
|
|
8
|
+
*/
|
|
9
|
+
export function diagnosticId(d) {
|
|
10
|
+
return `${d.code}@${d.nodeId}${d.field ? `/${d.field}` : ''}`;
|
|
11
|
+
}
|
|
12
|
+
/** Node id → owning specification id, for every node of `doc`. */
|
|
13
|
+
function specOwners(doc) {
|
|
14
|
+
const owners = new Map();
|
|
15
|
+
for (const spec of doc.nodes.specs) {
|
|
16
|
+
owners.set(spec.id, spec.id);
|
|
17
|
+
for (const facet of [...spec.applicability, ...spec.requirements]) {
|
|
18
|
+
owners.set(facet.id, spec.id);
|
|
19
|
+
for (const id of Object.values(facet.constraints))
|
|
20
|
+
if (id)
|
|
21
|
+
owners.set(id, spec.id);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
return owners;
|
|
25
|
+
}
|
|
26
|
+
/** The specifications a set of touched nodes belongs to, before or after the change. */
|
|
27
|
+
export function specIdsFor(touched, before, after) {
|
|
28
|
+
const ownersAfter = specOwners(after);
|
|
29
|
+
const ownersBefore = specOwners(before);
|
|
30
|
+
const specs = new Set();
|
|
31
|
+
for (const id of touched) {
|
|
32
|
+
const owner = ownersAfter.get(id) ?? ownersBefore.get(id);
|
|
33
|
+
if (owner)
|
|
34
|
+
specs.add(owner);
|
|
35
|
+
}
|
|
36
|
+
return [...specs];
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=nodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../src/sandbox/nodes.ts"],"names":[],"mappings":"AAAA;;+DAE+D;AAM/D;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,CAAgD;IAC3E,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAChE,CAAC;AAED,kEAAkE;AAClE,SAAS,UAAU,CAAC,GAAmB;IACrC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAc,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7B,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAClE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;YAC9B,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC;gBAAE,IAAI,EAAE;oBAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,UAAU,CAAC,OAAuB,EAAE,MAAsB,EAAE,KAAqB;IAC/F,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IACtC,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAQ,CAAC;IAC9B,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1D,IAAI,KAAK;YAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The sandbox fork an agent run works on (ADR-008).
|
|
3
|
+
*
|
|
4
|
+
* It starts from a copy of the user's document and changes ONLY through the
|
|
5
|
+
* op vocabulary: every batch passes the grounding gate (`checkOps`) before
|
|
6
|
+
* the reducer applies it (`commit`), all or nothing. A rejected batch leaves
|
|
7
|
+
* the fork untouched and returns the gate issues, with ranked candidates,
|
|
8
|
+
* for the model to correct. After each applied batch the linter re-runs and
|
|
9
|
+
* the diagnostics delta is reported back.
|
|
10
|
+
*
|
|
11
|
+
* Every applied batch is recorded with its rationale and sources: those
|
|
12
|
+
* records ARE the proposal the user reviews. The live document is never
|
|
13
|
+
* touched here; `acceptProposal` replays chosen batches through the gate
|
|
14
|
+
* again against the live document.
|
|
15
|
+
*/
|
|
16
|
+
import { type Diagnostic, type GateContext, type LintContext, type StudioDocument, type StudioOp, type Uuid } from '@ifc-lite/ids-authoring';
|
|
17
|
+
import { type HandleTable } from './handles.js';
|
|
18
|
+
/** Op kinds the reducer emits as exact inverses; an agent never authors them. */
|
|
19
|
+
export declare const FIDELITY_KINDS: ReadonlySet<string>;
|
|
20
|
+
/** Where a batch's content came from in the user's source material. */
|
|
21
|
+
export interface BatchSource {
|
|
22
|
+
/** Index of the op in the batch the source supports; absent for the whole batch. */
|
|
23
|
+
opIndex?: number;
|
|
24
|
+
docRef?: string;
|
|
25
|
+
quote: string;
|
|
26
|
+
page?: number;
|
|
27
|
+
}
|
|
28
|
+
export interface ProposalBatch {
|
|
29
|
+
/** `b1`, `b2`, … in apply order. */
|
|
30
|
+
id: string;
|
|
31
|
+
origin: 'apply_ops' | 'apply_fix' | 'ask_user';
|
|
32
|
+
/** Resolved ops (handles replaced, op ids filled), exactly as committed to the fork. */
|
|
33
|
+
ops: StudioOp[];
|
|
34
|
+
rationale?: string;
|
|
35
|
+
sources: BatchSource[];
|
|
36
|
+
/** Specifications the batch created, changed or removed. */
|
|
37
|
+
specIds: Uuid[];
|
|
38
|
+
/** Set for `apply_fix`: the diagnostic it fixed. */
|
|
39
|
+
fix?: {
|
|
40
|
+
code: string;
|
|
41
|
+
diagnosticId: string;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export type UnresolvedCategory = 'geometry' | 'relationship' | 'rules-engine' | 'manual' | 'ambiguous' | 'out-of-scope';
|
|
45
|
+
export interface UnresolvedStatement {
|
|
46
|
+
id: string;
|
|
47
|
+
statement: string;
|
|
48
|
+
category: UnresolvedCategory;
|
|
49
|
+
reason: string;
|
|
50
|
+
source?: BatchSource;
|
|
51
|
+
}
|
|
52
|
+
/** One gate (or reducer) refusal, abridged for the model. */
|
|
53
|
+
export interface Refusal {
|
|
54
|
+
code: string;
|
|
55
|
+
path: string;
|
|
56
|
+
message: string;
|
|
57
|
+
candidates: string[];
|
|
58
|
+
value?: string;
|
|
59
|
+
}
|
|
60
|
+
export interface DiagnosticBrief {
|
|
61
|
+
diagnosticId: string;
|
|
62
|
+
code: string;
|
|
63
|
+
severity: Diagnostic['severity'];
|
|
64
|
+
message: string;
|
|
65
|
+
specId?: Uuid;
|
|
66
|
+
fixes: string[];
|
|
67
|
+
}
|
|
68
|
+
export type ApplyOutcome = {
|
|
69
|
+
applied: true;
|
|
70
|
+
batch: ProposalBatch;
|
|
71
|
+
added: DiagnosticBrief[];
|
|
72
|
+
resolved: number;
|
|
73
|
+
handles: Record<string, Uuid>;
|
|
74
|
+
} | {
|
|
75
|
+
applied: false;
|
|
76
|
+
refusals: Refusal[];
|
|
77
|
+
};
|
|
78
|
+
export interface SandboxOptions {
|
|
79
|
+
doc: StudioDocument;
|
|
80
|
+
gate: GateContext;
|
|
81
|
+
lint: LintContext;
|
|
82
|
+
runId: string;
|
|
83
|
+
/** Recorded on the fork's history entries. */
|
|
84
|
+
model: string;
|
|
85
|
+
/** Mode restriction on op kinds and fields; returns the reason an op is not allowed. */
|
|
86
|
+
opGuard?: (op: {
|
|
87
|
+
kind: string;
|
|
88
|
+
payload?: unknown;
|
|
89
|
+
}) => string | null;
|
|
90
|
+
}
|
|
91
|
+
export interface Sandbox {
|
|
92
|
+
readonly base: StudioDocument;
|
|
93
|
+
readonly doc: StudioDocument;
|
|
94
|
+
readonly batches: readonly ProposalBatch[];
|
|
95
|
+
readonly unresolved: readonly UnresolvedStatement[];
|
|
96
|
+
readonly handles: HandleTable;
|
|
97
|
+
diagnostics(): Diagnostic[];
|
|
98
|
+
apply(ops: readonly unknown[], meta: {
|
|
99
|
+
origin: ProposalBatch['origin'];
|
|
100
|
+
rationale?: string;
|
|
101
|
+
sources?: BatchSource[];
|
|
102
|
+
fix?: ProposalBatch['fix'];
|
|
103
|
+
}): ApplyOutcome;
|
|
104
|
+
/** Undo the latest `steps` batches; returns how many were undone. */
|
|
105
|
+
undo(steps: number): number;
|
|
106
|
+
markUnresolved(entry: Omit<UnresolvedStatement, 'id'>): UnresolvedStatement;
|
|
107
|
+
}
|
|
108
|
+
export declare function brief(d: Diagnostic): DiagnosticBrief;
|
|
109
|
+
export declare function createSandbox(options: SandboxOptions): Sandbox;
|
|
110
|
+
//# sourceMappingURL=sandbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../src/sandbox/sandbox.ts"],"names":[],"mappings":"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"}
|