@xenosystem/agent-interface-contract 0.1.25 → 0.1.27
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/account.d.ts +285 -0
- package/dist/account.d.ts.map +1 -0
- package/dist/account.js +2 -0
- package/dist/account.js.map +1 -0
- package/dist/accountMembership.d.ts +86 -0
- package/dist/accountMembership.d.ts.map +1 -0
- package/dist/accountMembership.js +2 -0
- package/dist/accountMembership.js.map +1 -0
- package/dist/audit.d.ts +29 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +14 -0
- package/dist/audit.js.map +1 -0
- package/dist/backups.d.ts +43 -0
- package/dist/backups.d.ts.map +1 -0
- package/dist/backups.js +2 -0
- package/dist/backups.js.map +1 -0
- package/dist/browser.d.ts +117 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +2 -0
- package/dist/browser.js.map +1 -0
- package/dist/engineering.d.ts +12 -8
- package/dist/engineering.d.ts.map +1 -1
- package/dist/environment.d.ts +30 -0
- package/dist/environment.d.ts.map +1 -0
- package/dist/environment.js +2 -0
- package/dist/environment.js.map +1 -0
- package/dist/index.d.ts +192 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +45 -1
- package/dist/index.js.map +1 -1
- package/dist/inference.d.ts +34 -0
- package/dist/inference.d.ts.map +1 -0
- package/dist/inference.js +46 -0
- package/dist/inference.js.map +1 -0
- package/dist/notifications.d.ts +124 -0
- package/dist/notifications.d.ts.map +1 -0
- package/dist/notifications.js +2 -0
- package/dist/notifications.js.map +1 -0
- package/dist/rules.d.ts +20 -0
- package/dist/rules.d.ts.map +1 -0
- package/dist/rules.js +2 -0
- package/dist/rules.js.map +1 -0
- package/dist/scheduling.d.ts +45 -0
- package/dist/scheduling.d.ts.map +1 -0
- package/dist/scheduling.js +2 -0
- package/dist/scheduling.js.map +1 -0
- package/dist/usage.d.ts +44 -0
- package/dist/usage.d.ts.map +1 -0
- package/dist/usage.js +19 -0
- package/dist/usage.js.map +1 -0
- package/dist/workforce.d.ts +105 -0
- package/dist/workforce.d.ts.map +1 -0
- package/dist/workforce.js +173 -0
- package/dist/workforce.js.map +1 -0
- package/dist/workspaceFile.d.ts +7 -0
- package/dist/workspaceFile.d.ts.map +1 -0
- package/dist/workspaceFile.js +42 -0
- package/dist/workspaceFile.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { isAgentHostClientIdentity } from './index.js';
|
|
2
|
+
/** Shared executable wire validation. This does not grant filesystem authority. */
|
|
3
|
+
export const WORKSPACE_FILE_TEXT_MAX_BYTES = 1024 * 1024;
|
|
4
|
+
const record = (value) => !!value && typeof value === 'object' && !Array.isArray(value);
|
|
5
|
+
const boundedText = (value, max) => typeof value === 'string' && value.trim().length > 0 && value.length <= max && !/[\x00-\x1f\x7f]/.test(value);
|
|
6
|
+
const allowedFields = new Set(['client', 'allowedDirectories', 'conversationId', 'workspaceId', 'teamId', 'agentId', 'path', 'content', 'expectedContent']);
|
|
7
|
+
/** Empty text is valid; missing/falsy non-string content is never an empty-file request. */
|
|
8
|
+
export function isBoundedWorkspaceFileText(value) {
|
|
9
|
+
if (typeof value !== 'string' || value.length > WORKSPACE_FILE_TEXT_MAX_BYTES)
|
|
10
|
+
return false;
|
|
11
|
+
// UTF-8 cannot faithfully encode unpaired UTF-16 surrogates. Do not silently
|
|
12
|
+
// replace user bytes with U+FFFD while reporting a successful file save.
|
|
13
|
+
for (let index = 0; index < value.length; index += 1) {
|
|
14
|
+
const code = value.charCodeAt(index);
|
|
15
|
+
if (code >= 0xd800 && code <= 0xdbff) {
|
|
16
|
+
const low = value.charCodeAt(++index);
|
|
17
|
+
if (!(low >= 0xdc00 && low <= 0xdfff))
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
else if (code >= 0xdc00 && code <= 0xdfff)
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
return new TextEncoder().encode(value).byteLength <= WORKSPACE_FILE_TEXT_MAX_BYTES;
|
|
24
|
+
}
|
|
25
|
+
export function isAgentWorkspaceFileWriteRequest(value) {
|
|
26
|
+
if (!record(value) || Object.keys(value).some(key => !allowedFields.has(key)))
|
|
27
|
+
return false;
|
|
28
|
+
const client = value.client;
|
|
29
|
+
if (!isAgentHostClientIdentity(client) || !record(client)
|
|
30
|
+
|| Object.keys(client).some(key => !['clientId', 'clientVersion', 'instanceId', 'surface'].includes(key))
|
|
31
|
+
|| !['clientId', 'clientVersion', 'instanceId'].every(key => boundedText(client[key], 256)))
|
|
32
|
+
return false;
|
|
33
|
+
if (!boundedText(value.path, 32767) || !isBoundedWorkspaceFileText(value.content))
|
|
34
|
+
return false;
|
|
35
|
+
if (value.expectedContent !== undefined && value.expectedContent !== null && !isBoundedWorkspaceFileText(value.expectedContent))
|
|
36
|
+
return false;
|
|
37
|
+
if (!Array.isArray(value.allowedDirectories) || value.allowedDirectories.length > 256
|
|
38
|
+
|| !value.allowedDirectories.every(path => boundedText(path, 32767)))
|
|
39
|
+
return false;
|
|
40
|
+
return ['conversationId', 'workspaceId', 'teamId', 'agentId'].every(key => value[key] === undefined || boundedText(value[key], 256));
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=workspaceFile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspaceFile.js","sourceRoot":"","sources":["../src/workspaceFile.ts"],"names":[],"mappings":"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"}
|