@superdoc/sdk 2.23.0-next.1 → 2.23.0-next.10
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/dist/action-primitives/tools/structure-insert.cjs +3 -5
- package/dist/action-primitives/tools/structure-insert.js +3 -5
- package/dist/action-primitives/tools/text-transform.cjs +3 -5
- package/dist/action-primitives/tools/text-transform.js +3 -5
- package/dist/actions/define.cjs +15 -17
- package/dist/actions/define.js +1 -3
- package/dist/agent/actions.cjs +42 -44
- package/dist/agent/actions.js +1 -3
- package/dist/agent/operation-catalog.js +0 -4
- package/dist/agent/runtime.cjs +7 -9
- package/dist/agent/runtime.js +1 -3
- package/dist/agent/v2-preset-compat.cjs +5 -7
- package/dist/agent/v2-preset-compat.js +1 -3
- package/dist/embedded-tools.generated.cjs +5 -5
- package/dist/embedded-tools.generated.js +5 -5
- package/dist/generated/client.cjs +10 -0
- package/dist/generated/client.d.ts +16343 -919
- package/dist/generated/client.js +10 -0
- package/dist/generated/contract.cjs +1 -1
- package/dist/generated/contract.js +1 -1
- package/dist/guards.cjs +7 -0
- package/dist/guards.d.ts +1 -0
- package/dist/guards.js +3 -0
- package/dist/presets/core.cjs +10 -12
- package/dist/presets/core.js +1 -3
- package/dist/presets/legacy.cjs +6 -8
- package/dist/presets/legacy.js +1 -3
- package/dist/runtime/sdk-version.generated.cjs +1 -1
- package/dist/runtime/sdk-version.generated.d.ts +1 -1
- package/dist/runtime/sdk-version.generated.js +1 -1
- package/package.json +6 -6
- package/tools/catalog.json +77 -0
- package/tools/generation-receipt.json +17 -17
- package/tools/tools-policy.json +1 -1
- package/tools/tools.anthropic.json +77 -0
- package/tools/tools.generic.json +77 -0
- package/tools/tools.openai.json +77 -0
- package/tools/tools.vercel.json +77 -0
package/dist/guards.cjs
ADDED
package/dist/guards.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
package/dist/guards.js
ADDED
package/dist/presets/core.cjs
CHANGED
|
@@ -9,6 +9,7 @@ var catalog = require('../agent/catalog.cjs');
|
|
|
9
9
|
var runtime = require('../agent/runtime.cjs');
|
|
10
10
|
var actions = require('../agent/actions.cjs');
|
|
11
11
|
var embeddedPrompts_generated = require('../embedded-prompts.generated.cjs');
|
|
12
|
+
var guards = require('../guards.cjs');
|
|
12
13
|
|
|
13
14
|
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
14
15
|
/**
|
|
@@ -74,9 +75,6 @@ async function readPromptFile(fileName, label, candidateDirs = PROMPT_DIR_CANDID
|
|
|
74
75
|
details: { triedPaths: tried },
|
|
75
76
|
});
|
|
76
77
|
}
|
|
77
|
-
function isRecord(value) {
|
|
78
|
-
return typeof value === 'object' && value != null && !Array.isArray(value);
|
|
79
|
-
}
|
|
80
78
|
function isObviouslyCorruptedToolArgKey(key) {
|
|
81
79
|
const trimmed = key.trim();
|
|
82
80
|
return trimmed.length === 0 || !/[\p{L}\p{N}]/u.test(trimmed);
|
|
@@ -85,7 +83,7 @@ function stripCorruptedToolArgKeys(value) {
|
|
|
85
83
|
if (Array.isArray(value)) {
|
|
86
84
|
return value.map((item) => stripCorruptedToolArgKeys(item));
|
|
87
85
|
}
|
|
88
|
-
if (!isRecord(value))
|
|
86
|
+
if (!guards.isRecord(value))
|
|
89
87
|
return value;
|
|
90
88
|
const clean = {};
|
|
91
89
|
for (const [key, entryValue] of Object.entries(value)) {
|
|
@@ -109,7 +107,7 @@ function validateAgentToolArgs(toolName, args) {
|
|
|
109
107
|
if (definition == null)
|
|
110
108
|
return;
|
|
111
109
|
const schema = definition.inputSchema;
|
|
112
|
-
const properties = isRecord(schema.properties) ? schema.properties : {};
|
|
110
|
+
const properties = guards.isRecord(schema.properties) ? schema.properties : {};
|
|
113
111
|
const required = Array.isArray(schema.required) ? schema.required : [];
|
|
114
112
|
const knownKeys = new Set(Object.keys(properties));
|
|
115
113
|
const unknownKeys = Object.keys(args).filter((key) => !knownKeys.has(key));
|
|
@@ -162,7 +160,7 @@ function compactCountMap(counts) {
|
|
|
162
160
|
return compact;
|
|
163
161
|
}
|
|
164
162
|
function pickScalarFields(value, keys, limit = 6) {
|
|
165
|
-
if (!isRecord(value))
|
|
163
|
+
if (!guards.isRecord(value))
|
|
166
164
|
return {};
|
|
167
165
|
const entries = keys
|
|
168
166
|
? keys.filter((key) => key in value).map((key) => [key, value[key]])
|
|
@@ -186,12 +184,12 @@ function compactOperationResult(result) {
|
|
|
186
184
|
}
|
|
187
185
|
if (Array.isArray(result))
|
|
188
186
|
return { itemCount: result.length };
|
|
189
|
-
if (!isRecord(result))
|
|
187
|
+
if (!guards.isRecord(result))
|
|
190
188
|
return { kind: typeof result };
|
|
191
189
|
const compact = {
|
|
192
190
|
...pickScalarFields(result, ['success', 'status', 'count', 'total', 'applied', 'created', 'deleted']),
|
|
193
191
|
};
|
|
194
|
-
if (isRecord(result.revision)) {
|
|
192
|
+
if (guards.isRecord(result.revision)) {
|
|
195
193
|
const revision = pickScalarFields(result.revision, ['before', 'after', 'current']);
|
|
196
194
|
if (Object.keys(revision).length > 0)
|
|
197
195
|
compact.revision = revision;
|
|
@@ -200,7 +198,7 @@ function compactOperationResult(result) {
|
|
|
200
198
|
compact.stepCount = result.steps.length;
|
|
201
199
|
compact.steps = result.steps
|
|
202
200
|
.slice(0, 4)
|
|
203
|
-
.map((step) => (isRecord(step) ? pickScalarFields(step, ['stepId', 'op', 'effect', 'matchCount'], 4) : {}));
|
|
201
|
+
.map((step) => (guards.isRecord(step) ? pickScalarFields(step, ['stepId', 'op', 'effect', 'matchCount'], 4) : {}));
|
|
204
202
|
}
|
|
205
203
|
if (Array.isArray(result.items))
|
|
206
204
|
compact.itemCount = result.items.length;
|
|
@@ -532,14 +530,14 @@ const ENFORCEMENT_SIDE_DOORS = new Set([
|
|
|
532
530
|
]);
|
|
533
531
|
const POLICY_OPTION_KEYS = ['excludeActions', 'enforceChangeMode', 'allowDirectActions'];
|
|
534
532
|
async function coreDispatch(documentHandle, toolName, args, invokeOptions) {
|
|
535
|
-
if (!isRecord(args)) {
|
|
533
|
+
if (!guards.isRecord(args)) {
|
|
536
534
|
throw new errors.SuperDocCliError(`Tool arguments for ${toolName} must be an object.`, {
|
|
537
535
|
code: 'INVALID_ARGUMENT',
|
|
538
536
|
details: { toolName },
|
|
539
537
|
});
|
|
540
538
|
}
|
|
541
539
|
const sanitizedArgs = stripCorruptedToolArgKeys(args);
|
|
542
|
-
if (!isRecord(sanitizedArgs)) {
|
|
540
|
+
if (!guards.isRecord(sanitizedArgs)) {
|
|
543
541
|
throw new errors.SuperDocCliError(`Tool arguments for ${toolName} must be an object.`, {
|
|
544
542
|
code: 'INVALID_ARGUMENT',
|
|
545
543
|
details: { toolName },
|
|
@@ -601,7 +599,7 @@ async function coreDispatch(documentHandle, toolName, args, invokeOptions) {
|
|
|
601
599
|
if (catalog.isAgentToolName(toolName)) {
|
|
602
600
|
validateAgentToolArgs(toolName, dispatchArgs);
|
|
603
601
|
const result = await dispatchAgentTool(documentHandle, toolName, dispatchArgs, forwardOptions);
|
|
604
|
-
if (enforcing && toolName === 'superdoc_perform_action' && isRecord(result)) {
|
|
602
|
+
if (enforcing && toolName === 'superdoc_perform_action' && guards.isRecord(result)) {
|
|
605
603
|
// Receipts under enforcement state the mode that actually ran, so a host
|
|
606
604
|
// can audit "was this edit tracked?" without re-deriving the policy.
|
|
607
605
|
const changeMode = dispatchArgs.changeMode === 'tracked' ? 'tracked' : 'direct';
|
package/dist/presets/core.js
CHANGED
|
@@ -22,6 +22,7 @@ import { AGENT_TOOL_DEFINITIONS, isAgentToolName, listAgentTools, resolveActionP
|
|
|
22
22
|
import { agentApply, agentInspect, agentOperation, agentVerify } from '../agent/runtime.js';
|
|
23
23
|
import { ACTION_ARGS, ACTION_DISPOSITIONS, isActionName, superdocPerformAction } from '../agent/actions.js';
|
|
24
24
|
import { EMBEDDED_PROMPTS } from '../embedded-prompts.generated.js';
|
|
25
|
+
import { isRecord } from '../guards.js';
|
|
25
26
|
// Prompts ship as <dist>/prompts/*.md. Resolve relative to the compiled
|
|
26
27
|
// module, but the module's depth differs by build: in the SDK package this
|
|
27
28
|
// file is dist/presets/core.js (so prompts are at ../prompts), while the
|
|
@@ -70,9 +71,6 @@ export async function readPromptFile(fileName, label, candidateDirs = PROMPT_DIR
|
|
|
70
71
|
details: { triedPaths: tried },
|
|
71
72
|
});
|
|
72
73
|
}
|
|
73
|
-
function isRecord(value) {
|
|
74
|
-
return typeof value === 'object' && value != null && !Array.isArray(value);
|
|
75
|
-
}
|
|
76
74
|
function isObviouslyCorruptedToolArgKey(key) {
|
|
77
75
|
const trimmed = key.trim();
|
|
78
76
|
return trimmed.length === 0 || !/[\p{L}\p{N}]/u.test(trimmed);
|
package/dist/presets/legacy.cjs
CHANGED
|
@@ -6,6 +6,7 @@ var node_url = require('node:url');
|
|
|
6
6
|
var errors = require('../runtime/errors.cjs');
|
|
7
7
|
var intentDispatch_generated = require('../generated/intent-dispatch.generated.cjs');
|
|
8
8
|
var embeddedTools_generated = require('../embedded-tools.generated.cjs');
|
|
9
|
+
var guards = require('../guards.cjs');
|
|
9
10
|
|
|
10
11
|
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
11
12
|
/**
|
|
@@ -32,9 +33,6 @@ const providerFileByName = {
|
|
|
32
33
|
generic: 'tools.generic.json',
|
|
33
34
|
};
|
|
34
35
|
const STRIP_EMPTY_OPTIONAL_ARGS = new Set(['parentId', 'parentCommentId', 'id', 'status']);
|
|
35
|
-
function isRecord(value) {
|
|
36
|
-
return typeof value === 'object' && value != null && !Array.isArray(value);
|
|
37
|
-
}
|
|
38
36
|
function isObviouslyCorruptedToolArgKey(key) {
|
|
39
37
|
const trimmed = key.trim();
|
|
40
38
|
return trimmed.length === 0 || !/[\p{L}\p{N}]/u.test(trimmed);
|
|
@@ -43,7 +41,7 @@ function stripCorruptedToolArgKeys(value) {
|
|
|
43
41
|
if (Array.isArray(value)) {
|
|
44
42
|
return value.map((item) => stripCorruptedToolArgKeys(item));
|
|
45
43
|
}
|
|
46
|
-
if (!isRecord(value))
|
|
44
|
+
if (!guards.isRecord(value))
|
|
47
45
|
return value;
|
|
48
46
|
const clean = {};
|
|
49
47
|
for (const [key, entryValue] of Object.entries(value)) {
|
|
@@ -139,7 +137,7 @@ function resolveDocApiMethod(documentHandle, operationId) {
|
|
|
139
137
|
const tokens = operationId.split('.').slice(1);
|
|
140
138
|
let cursor = documentHandle;
|
|
141
139
|
for (const token of tokens) {
|
|
142
|
-
if (!isRecord(cursor) || !(token in cursor)) {
|
|
140
|
+
if (!guards.isRecord(cursor) || !(token in cursor)) {
|
|
143
141
|
throw new errors.SuperDocCliError(`No SDK doc method found for operation ${operationId}.`, {
|
|
144
142
|
code: 'TOOL_DISPATCH_NOT_FOUND',
|
|
145
143
|
details: { operationId, token },
|
|
@@ -165,7 +163,7 @@ function resolveDocApiMethod(documentHandle, operationId) {
|
|
|
165
163
|
*/
|
|
166
164
|
function validateToolArgs(toolName, args, tool) {
|
|
167
165
|
const schema = tool.inputSchema;
|
|
168
|
-
const properties = isRecord(schema.properties) ? schema.properties : {};
|
|
166
|
+
const properties = guards.isRecord(schema.properties) ? schema.properties : {};
|
|
169
167
|
const required = Array.isArray(schema.required) ? schema.required : [];
|
|
170
168
|
// 1. Reject unknown keys (additionalProperties: false in merged schema)
|
|
171
169
|
const knownKeys = new Set(Object.keys(properties));
|
|
@@ -247,14 +245,14 @@ async function legacyGetMcpPrompt() {
|
|
|
247
245
|
return (await readToolFile('system-prompt-mcp.md', 'MCP system prompt not found.')).raw;
|
|
248
246
|
}
|
|
249
247
|
async function legacyDispatch(documentHandle, toolName, args, invokeOptions) {
|
|
250
|
-
if (!isRecord(args)) {
|
|
248
|
+
if (!guards.isRecord(args)) {
|
|
251
249
|
throw new errors.SuperDocCliError(`Tool arguments for ${toolName} must be an object.`, {
|
|
252
250
|
code: 'INVALID_ARGUMENT',
|
|
253
251
|
details: { toolName },
|
|
254
252
|
});
|
|
255
253
|
}
|
|
256
254
|
const sanitizedArgs = stripCorruptedToolArgKeys(args);
|
|
257
|
-
if (!isRecord(sanitizedArgs)) {
|
|
255
|
+
if (!guards.isRecord(sanitizedArgs)) {
|
|
258
256
|
throw new errors.SuperDocCliError(`Tool arguments for ${toolName} must be an object.`, {
|
|
259
257
|
code: 'INVALID_ARGUMENT',
|
|
260
258
|
details: { toolName },
|
package/dist/presets/legacy.js
CHANGED
|
@@ -19,6 +19,7 @@ import { fileURLToPath } from 'node:url';
|
|
|
19
19
|
import { SuperDocCliError } from '../runtime/errors.js';
|
|
20
20
|
import { dispatchIntentTool } from '../generated/intent-dispatch.generated.js';
|
|
21
21
|
import { EMBEDDED_TOOLS } from '../embedded-tools.generated.js';
|
|
22
|
+
import { isRecord } from '../guards.js';
|
|
22
23
|
const MODULE_DIR = path.dirname(fileURLToPath(import.meta.url));
|
|
23
24
|
const TOOLS_DIR_CANDIDATES = [path.resolve(MODULE_DIR, '..', '..', 'tools'), path.resolve(MODULE_DIR, 'tools')];
|
|
24
25
|
const providerFileByName = {
|
|
@@ -28,9 +29,6 @@ const providerFileByName = {
|
|
|
28
29
|
generic: 'tools.generic.json',
|
|
29
30
|
};
|
|
30
31
|
const STRIP_EMPTY_OPTIONAL_ARGS = new Set(['parentId', 'parentCommentId', 'id', 'status']);
|
|
31
|
-
function isRecord(value) {
|
|
32
|
-
return typeof value === 'object' && value != null && !Array.isArray(value);
|
|
33
|
-
}
|
|
34
32
|
function isObviouslyCorruptedToolArgKey(key) {
|
|
35
33
|
const trimmed = key.trim();
|
|
36
34
|
return trimmed.length === 0 || !/[\p{L}\p{N}]/u.test(trimmed);
|
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
// AUTO-GENERATED by scripts/embed-version.mjs — DO NOT EDIT.
|
|
4
4
|
// Source of truth: package.json. Regenerated on every SDK build so the
|
|
5
5
|
// SDK retains its own version identity when bundled into another package.
|
|
6
|
-
const SDK_VERSION = '2.23.0-next.
|
|
6
|
+
const SDK_VERSION = '2.23.0-next.10';
|
|
7
7
|
|
|
8
8
|
exports.SDK_VERSION = SDK_VERSION;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "2.23.0-next.
|
|
1
|
+
export declare const SDK_VERSION = "2.23.0-next.10";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
// AUTO-GENERATED by scripts/embed-version.mjs — DO NOT EDIT.
|
|
2
2
|
// Source of truth: package.json. Regenerated on every SDK build so the
|
|
3
3
|
// SDK retains its own version identity when bundled into another package.
|
|
4
|
-
export const SDK_VERSION = '2.23.0-next.
|
|
4
|
+
export const SDK_VERSION = '2.23.0-next.10';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@superdoc/sdk",
|
|
3
|
-
"version": "2.23.0-next.
|
|
3
|
+
"version": "2.23.0-next.10",
|
|
4
4
|
"description": "Node SDK for SuperDoc, wrapping the SuperDoc CLI to read and edit .docx files from JavaScript and TypeScript.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"license": "AGPL-3.0",
|
|
@@ -38,11 +38,11 @@
|
|
|
38
38
|
"typescript": "^5.9.2"
|
|
39
39
|
},
|
|
40
40
|
"optionalDependencies": {
|
|
41
|
-
"@superdoc/sdk-darwin-arm64": "2.23.0-next.
|
|
42
|
-
"@superdoc/sdk-darwin-x64": "2.23.0-next.
|
|
43
|
-
"@superdoc/sdk-linux-x64": "2.23.0-next.
|
|
44
|
-
"@superdoc/sdk-linux-arm64": "2.23.0-next.
|
|
45
|
-
"@superdoc/sdk-windows-x64": "2.23.0-next.
|
|
41
|
+
"@superdoc/sdk-darwin-arm64": "2.23.0-next.10",
|
|
42
|
+
"@superdoc/sdk-darwin-x64": "2.23.0-next.10",
|
|
43
|
+
"@superdoc/sdk-linux-x64": "2.23.0-next.10",
|
|
44
|
+
"@superdoc/sdk-linux-arm64": "2.23.0-next.10",
|
|
45
|
+
"@superdoc/sdk-windows-x64": "2.23.0-next.10"
|
|
46
46
|
},
|
|
47
47
|
"publishConfig": {
|
|
48
48
|
"access": "public"
|
package/tools/catalog.json
CHANGED
|
@@ -525,6 +525,28 @@
|
|
|
525
525
|
"type": "boolean",
|
|
526
526
|
"description": "Bypass confirmation checks."
|
|
527
527
|
},
|
|
528
|
+
"changeTag": {
|
|
529
|
+
"type": "string",
|
|
530
|
+
"description": "Caller correlation echoed only on this committed mutation; never stored in DOCX."
|
|
531
|
+
},
|
|
532
|
+
"author": {
|
|
533
|
+
"type": "object",
|
|
534
|
+
"properties": {
|
|
535
|
+
"name": {
|
|
536
|
+
"type": "string",
|
|
537
|
+
"minLength": 1
|
|
538
|
+
}
|
|
539
|
+
},
|
|
540
|
+
"required": [
|
|
541
|
+
"name"
|
|
542
|
+
],
|
|
543
|
+
"additionalProperties": false,
|
|
544
|
+
"description": "Per-call tracked revision author. Does not change the session user. Only for actions 'insert', 'replace', 'delete'. Omit for other actions."
|
|
545
|
+
},
|
|
546
|
+
"date": {
|
|
547
|
+
"type": "string",
|
|
548
|
+
"description": "Per-call tracked revision date as an ISO 8601 UTC timestamp. Only for actions 'insert', 'replace', 'delete'. Omit for other actions."
|
|
549
|
+
},
|
|
528
550
|
"changeMode": {
|
|
529
551
|
"type": "string",
|
|
530
552
|
"description": "Edit mode: \"direct\" applies changes immediately, \"tracked\" records as suggestions."
|
|
@@ -2402,6 +2424,28 @@
|
|
|
2402
2424
|
"type": "boolean",
|
|
2403
2425
|
"description": "Bypass confirmation checks."
|
|
2404
2426
|
},
|
|
2427
|
+
"changeTag": {
|
|
2428
|
+
"type": "string",
|
|
2429
|
+
"description": "Caller correlation echoed only on this committed mutation; never stored in DOCX."
|
|
2430
|
+
},
|
|
2431
|
+
"author": {
|
|
2432
|
+
"type": "object",
|
|
2433
|
+
"properties": {
|
|
2434
|
+
"name": {
|
|
2435
|
+
"type": "string",
|
|
2436
|
+
"minLength": 1
|
|
2437
|
+
}
|
|
2438
|
+
},
|
|
2439
|
+
"required": [
|
|
2440
|
+
"name"
|
|
2441
|
+
],
|
|
2442
|
+
"additionalProperties": false,
|
|
2443
|
+
"description": "Per-call tracked revision author. Does not change the session user. Only for action 'inline'. Omit for other actions."
|
|
2444
|
+
},
|
|
2445
|
+
"date": {
|
|
2446
|
+
"type": "string",
|
|
2447
|
+
"description": "Per-call tracked revision date as an ISO 8601 UTC timestamp. Only for action 'inline'. Omit for other actions."
|
|
2448
|
+
},
|
|
2405
2449
|
"changeMode": {
|
|
2406
2450
|
"type": "string",
|
|
2407
2451
|
"description": "Edit mode: \"direct\" applies changes immediately, \"tracked\" records as suggestions."
|
|
@@ -3999,6 +4043,10 @@
|
|
|
3999
4043
|
"type": "boolean",
|
|
4000
4044
|
"description": "Bypass confirmation checks."
|
|
4001
4045
|
},
|
|
4046
|
+
"changeTag": {
|
|
4047
|
+
"type": "string",
|
|
4048
|
+
"description": "Caller correlation echoed only on this committed mutation; never stored in DOCX."
|
|
4049
|
+
},
|
|
4002
4050
|
"changeMode": {
|
|
4003
4051
|
"type": "string",
|
|
4004
4052
|
"description": "Edit mode: \"direct\" applies changes immediately, \"tracked\" records as suggestions."
|
|
@@ -4534,6 +4582,10 @@
|
|
|
4534
4582
|
"type": "boolean",
|
|
4535
4583
|
"description": "Bypass confirmation checks."
|
|
4536
4584
|
},
|
|
4585
|
+
"changeTag": {
|
|
4586
|
+
"type": "string",
|
|
4587
|
+
"description": "Caller correlation echoed only on this committed mutation; never stored in DOCX."
|
|
4588
|
+
},
|
|
4537
4589
|
"changeMode": {
|
|
4538
4590
|
"type": "string",
|
|
4539
4591
|
"description": "Edit mode: \"direct\" applies changes immediately, \"tracked\" records as suggestions."
|
|
@@ -5254,6 +5306,10 @@
|
|
|
5254
5306
|
"type": "boolean",
|
|
5255
5307
|
"description": "Bypass confirmation checks."
|
|
5256
5308
|
},
|
|
5309
|
+
"changeTag": {
|
|
5310
|
+
"type": "string",
|
|
5311
|
+
"description": "Caller correlation echoed only on this committed mutation; never stored in DOCX."
|
|
5312
|
+
},
|
|
5257
5313
|
"changeMode": {
|
|
5258
5314
|
"type": "string",
|
|
5259
5315
|
"description": "Edit mode: \"direct\" applies changes immediately, \"tracked\" records as suggestions."
|
|
@@ -5926,6 +5982,10 @@
|
|
|
5926
5982
|
"type": "boolean",
|
|
5927
5983
|
"description": "Bypass confirmation checks. Only for action 'decide'. Omit for other actions."
|
|
5928
5984
|
},
|
|
5985
|
+
"changeTag": {
|
|
5986
|
+
"type": "string",
|
|
5987
|
+
"description": "Caller correlation echoed only on this committed mutation; never stored in DOCX. Only for action 'decide'. Omit for other actions."
|
|
5988
|
+
},
|
|
5929
5989
|
"changeMode": {
|
|
5930
5990
|
"type": "string",
|
|
5931
5991
|
"description": "Edit mode: \"direct\" applies changes immediately, \"tracked\" records as suggestions. Only for action 'decide'. Omit for other actions."
|
|
@@ -5937,6 +5997,11 @@
|
|
|
5937
5997
|
],
|
|
5938
5998
|
"description": "Required for action 'decide'."
|
|
5939
5999
|
},
|
|
6000
|
+
"commentRetention": {
|
|
6001
|
+
"const": "point",
|
|
6002
|
+
"type": "string",
|
|
6003
|
+
"description": "Keep erased comment anchors as points instead of deleting their threads. Only for action 'decide'. Omit for other actions."
|
|
6004
|
+
},
|
|
5940
6005
|
"expectedRevision": {
|
|
5941
6006
|
"type": "string",
|
|
5942
6007
|
"description": "Backward-compatible alias for options.expectedRevision. Explicit mutation options take precedence when both are supplied. Only for action 'decide'. Omit for other actions."
|
|
@@ -9295,6 +9360,10 @@
|
|
|
9295
9360
|
],
|
|
9296
9361
|
"type": "string"
|
|
9297
9362
|
},
|
|
9363
|
+
"commentRetention": {
|
|
9364
|
+
"const": "point",
|
|
9365
|
+
"type": "string"
|
|
9366
|
+
},
|
|
9298
9367
|
"target": {
|
|
9299
9368
|
"oneOf": [
|
|
9300
9369
|
{
|
|
@@ -9377,6 +9446,10 @@
|
|
|
9377
9446
|
"force": {
|
|
9378
9447
|
"type": "boolean",
|
|
9379
9448
|
"description": "Bypass confirmation checks. Only for action 'apply'. Omit for other actions."
|
|
9449
|
+
},
|
|
9450
|
+
"changeTag": {
|
|
9451
|
+
"type": "string",
|
|
9452
|
+
"description": "Caller correlation echoed only on this committed mutation; never stored in DOCX. Only for action 'apply'. Omit for other actions."
|
|
9380
9453
|
}
|
|
9381
9454
|
},
|
|
9382
9455
|
"required": [
|
|
@@ -9823,6 +9896,10 @@
|
|
|
9823
9896
|
"type": "boolean",
|
|
9824
9897
|
"description": "Bypass confirmation checks."
|
|
9825
9898
|
},
|
|
9899
|
+
"changeTag": {
|
|
9900
|
+
"type": "string",
|
|
9901
|
+
"description": "Caller correlation echoed only on this committed mutation; never stored in DOCX."
|
|
9902
|
+
},
|
|
9826
9903
|
"changeMode": {
|
|
9827
9904
|
"type": "string",
|
|
9828
9905
|
"description": "Edit mode: \"direct\" applies changes immediately, \"tracked\" records as suggestions."
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"formatVersion": 1,
|
|
3
|
-
"contractHash": "
|
|
4
|
-
"documentApiSourceHash": "
|
|
5
|
-
"generatorHash": "
|
|
3
|
+
"contractHash": "bc924b5585efd8f81307d866cfc6ec679039be9dc2d1f2e8c0eb0c394e2be5f7",
|
|
4
|
+
"documentApiSourceHash": "1a2d43b0207099cefeb15344c75639185d45e4cf46ffa487292771370935f92b",
|
|
5
|
+
"generatorHash": "e05173e2f1b9975d639695c3dee85109f4c38dc312165f020655d7ea449064a7",
|
|
6
6
|
"inputs": {
|
|
7
|
-
"apps/cli/src/host/sdk-policy.ts": "
|
|
7
|
+
"apps/cli/src/host/sdk-policy.ts": "8820bc2cb4694bd665cbfacbb55c262a5df5cde4ed2a1a8d0735c09c6a5e6dd8",
|
|
8
8
|
"packages/sdk/codegen/src/artifacts.mjs": "aecab7eca4694cbcf2366ddd9cabc033abddad2ff8fb0960d505580dbaf4d8b7",
|
|
9
9
|
"packages/sdk/codegen/src/contract-identity.mjs": "9d2fd074c10cf71f89e4cb9a1c8d96f9c4df4a15e11207cd0921dc58b6906b52",
|
|
10
10
|
"packages/sdk/codegen/src/generate-action-names.mjs": "eedb0b3e7ecab3bb7a4e507e339d8a06754cb8bab154da2583be2d5de024ea28",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"packages/sdk/codegen/src/model/schema.mjs": "29cb1167413280907ad324d8a1fcb54dc70cce829df00c1a755f43040d01cf3b",
|
|
16
16
|
"packages/sdk/codegen/src/shared.mjs": "a411e7ea4fab43b5b08b00294c746ff7063ceddbae66ece8d8c5990f131e0f7c",
|
|
17
17
|
"packages/sdk/codegen/src/targets.mjs": "62c5ae3e3813e07b37e62487d973bac60ef6bea558a01f3ace2e0c6e8374e147",
|
|
18
|
-
"packages/sdk/langs/node/package.json": "
|
|
18
|
+
"packages/sdk/langs/node/package.json": "d2a85c1bdccdc6d53e0af34a7d604e638a1c9a048c53a4977bc2496af2192ae6",
|
|
19
19
|
"packages/sdk/langs/node/scripts/embed-prompts.mjs": "1b1641bf89cad962a4ff11d93f301fe5a4e32fe856cd3c9586106d8aaab4ad80",
|
|
20
20
|
"packages/sdk/langs/node/scripts/embed-tools.mjs": "4cd8b0605b088421ea1fdf8e4e19c70f571f4e3352309a1480491600122e7bb3",
|
|
21
21
|
"packages/sdk/langs/node/scripts/embed-version.mjs": "95e2ff3a7c15cb38130e12f04c8a96c901a5e55d9960610ebefa37178fd19cde",
|
|
@@ -32,14 +32,14 @@
|
|
|
32
32
|
"outputs": {
|
|
33
33
|
"packages/sdk/langs/node/src/generated/contract.ts": {
|
|
34
34
|
"id": "node-contract",
|
|
35
|
-
"sha256": "
|
|
35
|
+
"sha256": "a4d9b0d437b5bc477a220114610f067b34adc48a02ff9a2e450977c0ac07f446",
|
|
36
36
|
"consumers": [
|
|
37
37
|
"node"
|
|
38
38
|
]
|
|
39
39
|
},
|
|
40
40
|
"packages/sdk/langs/node/src/generated/client.ts": {
|
|
41
41
|
"id": "node-client",
|
|
42
|
-
"sha256": "
|
|
42
|
+
"sha256": "92d71ceeb9a53d372c3a076c5340b2f7e1208de5cf151d0dc8850a0c70d9c348",
|
|
43
43
|
"consumers": [
|
|
44
44
|
"node"
|
|
45
45
|
]
|
|
@@ -53,14 +53,14 @@
|
|
|
53
53
|
},
|
|
54
54
|
"packages/sdk/langs/python/superdoc/generated/contract.py": {
|
|
55
55
|
"id": "python-contract",
|
|
56
|
-
"sha256": "
|
|
56
|
+
"sha256": "2217b912fadcd741d4232927d6c1f30d27f0666fcd9532949972eafbf327ecca",
|
|
57
57
|
"consumers": [
|
|
58
58
|
"python"
|
|
59
59
|
]
|
|
60
60
|
},
|
|
61
61
|
"packages/sdk/langs/python/superdoc/generated/client.py": {
|
|
62
62
|
"id": "python-client",
|
|
63
|
-
"sha256": "
|
|
63
|
+
"sha256": "05827d8d3a1e8b1e01eabd84297af16d247ec94dd2573715e114195c43dc93e6",
|
|
64
64
|
"consumers": [
|
|
65
65
|
"python"
|
|
66
66
|
]
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
},
|
|
96
96
|
"packages/sdk/tools/catalog.json": {
|
|
97
97
|
"id": "tool-catalog",
|
|
98
|
-
"sha256": "
|
|
98
|
+
"sha256": "386c15c0640ef0c9c74ac392e6089fe597b9b76d3455bb2f1b641d763b219f76",
|
|
99
99
|
"consumers": [
|
|
100
100
|
"node",
|
|
101
101
|
"python",
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
},
|
|
105
105
|
"packages/sdk/tools/tools-policy.json": {
|
|
106
106
|
"id": "tool-policy",
|
|
107
|
-
"sha256": "
|
|
107
|
+
"sha256": "0b91ea9c92e69af4e2773cac2616878b2bbb6f6e0885518169f3f8ab53da249c",
|
|
108
108
|
"consumers": [
|
|
109
109
|
"node",
|
|
110
110
|
"python"
|
|
@@ -112,7 +112,7 @@
|
|
|
112
112
|
},
|
|
113
113
|
"packages/sdk/tools/tools.openai.json": {
|
|
114
114
|
"id": "tools-openai",
|
|
115
|
-
"sha256": "
|
|
115
|
+
"sha256": "3934e84c92697a6ab9fb47a5f0444b1387f9d1809bef90dce09b7d0db586b41b",
|
|
116
116
|
"consumers": [
|
|
117
117
|
"node",
|
|
118
118
|
"python",
|
|
@@ -121,7 +121,7 @@
|
|
|
121
121
|
},
|
|
122
122
|
"packages/sdk/tools/tools.anthropic.json": {
|
|
123
123
|
"id": "tools-anthropic",
|
|
124
|
-
"sha256": "
|
|
124
|
+
"sha256": "e58e88bb52e755e565bc81999388cb97cf82155818e3f4d48d62d6b2e818d27d",
|
|
125
125
|
"consumers": [
|
|
126
126
|
"node",
|
|
127
127
|
"python",
|
|
@@ -130,7 +130,7 @@
|
|
|
130
130
|
},
|
|
131
131
|
"packages/sdk/tools/tools.vercel.json": {
|
|
132
132
|
"id": "tools-vercel",
|
|
133
|
-
"sha256": "
|
|
133
|
+
"sha256": "3934e84c92697a6ab9fb47a5f0444b1387f9d1809bef90dce09b7d0db586b41b",
|
|
134
134
|
"consumers": [
|
|
135
135
|
"node",
|
|
136
136
|
"python",
|
|
@@ -139,7 +139,7 @@
|
|
|
139
139
|
},
|
|
140
140
|
"packages/sdk/tools/tools.generic.json": {
|
|
141
141
|
"id": "tools-generic",
|
|
142
|
-
"sha256": "
|
|
142
|
+
"sha256": "46e3852dd401a2587d04c3d4213f6cc4ba3417de1b88e3536c582da212243e3c",
|
|
143
143
|
"consumers": [
|
|
144
144
|
"node",
|
|
145
145
|
"python",
|
|
@@ -179,14 +179,14 @@
|
|
|
179
179
|
},
|
|
180
180
|
"packages/sdk/langs/node/src/embedded-tools.generated.ts": {
|
|
181
181
|
"id": "node-embedded-tools",
|
|
182
|
-
"sha256": "
|
|
182
|
+
"sha256": "e1ddeac5e7f5a753548e606130422d102654e3d9d6a77184acab37bb2650e726",
|
|
183
183
|
"consumers": [
|
|
184
184
|
"node"
|
|
185
185
|
]
|
|
186
186
|
},
|
|
187
187
|
"packages/sdk/langs/node/src/runtime/sdk-version.generated.ts": {
|
|
188
188
|
"id": "node-sdk-version",
|
|
189
|
-
"sha256": "
|
|
189
|
+
"sha256": "5ac39f4bf11041e27bcdd07053b0b90dbfddc6ae156d56e8bf88110433428c92",
|
|
190
190
|
"consumers": [
|
|
191
191
|
"node"
|
|
192
192
|
]
|
package/tools/tools-policy.json
CHANGED