@molecule/api-ai-tools 1.14.5 → 1.14.8
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 +58 -10
- package/dist/playwright-report.d.ts +12 -2
- package/dist/playwright-report.d.ts.map +1 -1
- package/dist/playwright-report.js +3 -1
- package/dist/report-attachment-retention.d.ts +19 -0
- package/dist/report-attachment-retention.d.ts.map +1 -0
- package/dist/report-attachment-retention.js +107 -0
- package/dist/tools.d.ts +13 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +11 -6
- package/dist/utilities.d.ts +2 -2
- package/dist/utilities.d.ts.map +1 -1
- package/dist/utilities.js +10 -8
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@ AUTO-GENERATED — DO NOT EDIT THIS FILE.
|
|
|
3
3
|
Generated by `mlcl sync-docs` from the package's src/index.ts JSDoc + mlcl/registry.json.
|
|
4
4
|
Edits here are overwritten on the next commit (molecule's pre-commit hook regenerates).
|
|
5
5
|
To change this document, edit the module-level JSDoc in src/index.ts.
|
|
6
|
-
Generated: 2026-10-
|
|
6
|
+
Generated: 2026-10-27T16:36:52.062Z
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
9
|
# @molecule/api-ai-tools
|
|
@@ -384,7 +384,7 @@ interface PlaywrightReportAttachment {
|
|
|
384
384
|
name: string
|
|
385
385
|
/** Its media type, when the runner recorded one. */
|
|
386
386
|
contentType: string | null
|
|
387
|
-
/**
|
|
387
|
+
/** This attempt's published artifact path; a per-call copy when retention succeeded. */
|
|
388
388
|
path: string
|
|
389
389
|
}
|
|
390
390
|
```
|
|
@@ -454,6 +454,14 @@ A reader that needs evidence this record does not carry reads {@link path} in th
|
|
|
454
454
|
|
|
455
455
|
```typescript
|
|
456
456
|
interface PlaywrightRunReport {
|
|
457
|
+
/** Whether the published attachment paths were retained outside the runner's mutable output. */
|
|
458
|
+
artifactRetention?: {
|
|
459
|
+
status: 'retained' | 'partial' | 'unavailable'
|
|
460
|
+
omittedAttachments: number
|
|
461
|
+
bytes: number
|
|
462
|
+
/** The per-call snapshot root for readers of the retained trace tree. */
|
|
463
|
+
directory?: string
|
|
464
|
+
}
|
|
457
465
|
/** How much of the report was read — see {@link PlaywrightReportStatus}. */
|
|
458
466
|
status: PlaywrightReportStatus
|
|
459
467
|
/** Where the report file is, for the full evidence. Always the runner's own file. */
|
|
@@ -2254,7 +2262,9 @@ Whether every one of the classified failures is a connection failure — the onl
|
|
|
2254
2262
|
no response the app produced was measured.
|
|
2255
2263
|
|
|
2256
2264
|
```typescript
|
|
2257
|
-
function allConnectionFailures(
|
|
2265
|
+
function allConnectionFailures(
|
|
2266
|
+
failures: ReadonlyArray<RunFailureClass | null>,
|
|
2267
|
+
): failures is ReadonlyArray<RunFailureClass & { kind: 'connection' }>
|
|
2258
2268
|
```
|
|
2259
2269
|
|
|
2260
2270
|
- `failures` — The run's classifications, in printed order.
|
|
@@ -2370,7 +2380,13 @@ tools built outside this package get the same treatment as the ones built
|
|
|
2370
2380
|
inside it.
|
|
2371
2381
|
|
|
2372
2382
|
```typescript
|
|
2373
|
-
function guardAITool
|
|
2383
|
+
function guardAITool<
|
|
2384
|
+
T extends {
|
|
2385
|
+
name: string
|
|
2386
|
+
parameters?: unknown
|
|
2387
|
+
execute: (input: unknown, ...rest: never[]) => Promise<unknown>
|
|
2388
|
+
},
|
|
2389
|
+
>(tool: T, options?: GuardOptions): T
|
|
2374
2390
|
```
|
|
2375
2391
|
|
|
2376
2392
|
- `tool` — The tool to guard.
|
|
@@ -2818,7 +2834,10 @@ rows — the failures one causes the other cannot be told from real ones. A run
|
|
|
2818
2834
|
suite is never in the way, and neither is one the candidate command stops first.
|
|
2819
2835
|
|
|
2820
2836
|
```typescript
|
|
2821
|
-
function suiteRunInTheWay
|
|
2837
|
+
function suiteRunInTheWay<T extends SuiteRunInFlight>(
|
|
2838
|
+
candidate: { target: string },
|
|
2839
|
+
inFlight: readonly T[],
|
|
2840
|
+
): T | null
|
|
2822
2841
|
```
|
|
2823
2842
|
|
|
2824
2843
|
- `candidate` — The run about to start, by the app and database it would measure ({@link suiteCommandTarget}).
|
|
@@ -2931,6 +2950,27 @@ function createDeferredToolCatalog(options: DeferredToolCatalogOptions): Deferre
|
|
|
2931
2950
|
|
|
2932
2951
|
**Returns:** A loader tool and the current provider-facing selection.
|
|
2933
2952
|
|
|
2953
|
+
#### `readPlaywrightRunReport(backend, path, sanitize)`
|
|
2954
|
+
|
|
2955
|
+
One report file's bounded facts and retained native attachments, or honest omissions.
|
|
2956
|
+
|
|
2957
|
+
A report that is not there is NOT "the run failed nothing": `summarizePlaywrightReport` answers
|
|
2958
|
+
`missing`, and every reader treats that as no machine data rather than as a clean run.
|
|
2959
|
+
|
|
2960
|
+
```typescript
|
|
2961
|
+
function readPlaywrightRunReport(
|
|
2962
|
+
backend: Pick<ExecutionBackend, 'readFile' | 'run'>,
|
|
2963
|
+
path: string,
|
|
2964
|
+
sanitize: (text: string) => string,
|
|
2965
|
+
): Promise<PlaywrightRunReport>
|
|
2966
|
+
```
|
|
2967
|
+
|
|
2968
|
+
- `backend` — The project's execution backend.
|
|
2969
|
+
- `path` — The report file's absolute path (`/tmp/…`).
|
|
2970
|
+
- `sanitize` — The consumer's redactor for the error text the record carries.
|
|
2971
|
+
|
|
2972
|
+
**Returns:** The bounded record with per-call attachment copies; never a verdict.
|
|
2973
|
+
|
|
2934
2974
|
#### `taskStopCommand(backend, taskId)`
|
|
2935
2975
|
|
|
2936
2976
|
The command that stops a running background task, read from the sandbox's own pid files.
|
|
@@ -3597,7 +3637,12 @@ function streamingBackgroundCommand(
|
|
|
3597
3637
|
command: string,
|
|
3598
3638
|
context?: DiagnosisRunContext,
|
|
3599
3639
|
reportPath?: string,
|
|
3600
|
-
): {
|
|
3640
|
+
): {
|
|
3641
|
+
command: string
|
|
3642
|
+
changes: string[]
|
|
3643
|
+
reportPath?: string
|
|
3644
|
+
error?: string
|
|
3645
|
+
}
|
|
3601
3646
|
```
|
|
3602
3647
|
|
|
3603
3648
|
- `command` — The command as the executor sent it.
|
|
@@ -3753,7 +3798,10 @@ bounded by `wait_for_task` and the turn's deadline — so the prefix only kills
|
|
|
3753
3798
|
({@link withoutTimeoutWrapper}).
|
|
3754
3799
|
|
|
3755
3800
|
```typescript
|
|
3756
|
-
function withoutSuiteTimeout(command: string): {
|
|
3801
|
+
function withoutSuiteTimeout(command: string): {
|
|
3802
|
+
command: string
|
|
3803
|
+
seconds: number | null
|
|
3804
|
+
}
|
|
3757
3805
|
```
|
|
3758
3806
|
|
|
3759
3807
|
- `command` — The shell command.
|
|
@@ -3884,7 +3932,7 @@ function checkBlockedCommand(command: string): string | null
|
|
|
3884
3932
|
|
|
3885
3933
|
#### `resolvePath(path, projectRoot)`
|
|
3886
3934
|
|
|
3887
|
-
Normalize
|
|
3935
|
+
Normalize the project root and resolve a path absolutely within it.
|
|
3888
3936
|
Empty string and '/' both resolve to projectRoot.
|
|
3889
3937
|
Rejects paths that escape via traversal or absolute paths outside root.
|
|
3890
3938
|
|
|
@@ -3899,7 +3947,7 @@ function resolvePath(path: string, projectRoot: string): string
|
|
|
3899
3947
|
|
|
3900
3948
|
#### `isOutsideRoot(path, projectRoot)`
|
|
3901
3949
|
|
|
3902
|
-
Whether a tool path points outside the project root
|
|
3950
|
+
Whether a tool path points outside the normalized project root (an
|
|
3903
3951
|
absolute path elsewhere, or a `..` that climbs out). {@link resolvePath}
|
|
3904
3952
|
clamps such a path to the root; a file tool must refuse it instead of
|
|
3905
3953
|
answering about the root — a `list_files /tmp/x` used to return the
|
|
@@ -4985,7 +5033,7 @@ this package's own input normalization, keep symbol-keyed properties, so the hos
|
|
|
4985
5033
|
survives the real launch path.
|
|
4986
5034
|
|
|
4987
5035
|
```typescript
|
|
4988
|
-
const PLATFORM_PROOF:
|
|
5036
|
+
const PLATFORM_PROOF: unique symbol
|
|
4989
5037
|
```
|
|
4990
5038
|
|
|
4991
5039
|
#### `SPLIT_WORK_ADVICE`
|
|
@@ -14,7 +14,9 @@
|
|
|
14
14
|
* per-run file with the reporter's own `PLAYWRIGHT_JSON_OUTPUT_FILE` option, and this module turns
|
|
15
15
|
* that file into a small, bounded record on the tool result ({@link PlaywrightRunReport}). The
|
|
16
16
|
* whole file stays where it was written, so full evidence has a path; the record carries only what
|
|
17
|
-
* a diagnosis needs.
|
|
17
|
+
* a diagnosis needs. Before publication, execution tools retain bounded attachment copies beside
|
|
18
|
+
* the call's report. Later native runs may clean their output without invalidating these paths;
|
|
19
|
+
* `artifactRetention` reports omitted or unavailable copies honestly.
|
|
18
20
|
*
|
|
19
21
|
* Honesty rules, which every reader below follows:
|
|
20
22
|
*
|
|
@@ -69,7 +71,7 @@ export interface PlaywrightReportAttachment {
|
|
|
69
71
|
name: string;
|
|
70
72
|
/** Its media type, when the runner recorded one. */
|
|
71
73
|
contentType: string | null;
|
|
72
|
-
/**
|
|
74
|
+
/** This attempt's published artifact path; a per-call copy when retention succeeded. */
|
|
73
75
|
path: string;
|
|
74
76
|
}
|
|
75
77
|
/**
|
|
@@ -125,6 +127,14 @@ export interface PlaywrightReportStats {
|
|
|
125
127
|
* A reader that needs evidence this record does not carry reads {@link path} in the sandbox.
|
|
126
128
|
*/
|
|
127
129
|
export interface PlaywrightRunReport {
|
|
130
|
+
/** Whether the published attachment paths were retained outside the runner's mutable output. */
|
|
131
|
+
artifactRetention?: {
|
|
132
|
+
status: 'retained' | 'partial' | 'unavailable';
|
|
133
|
+
omittedAttachments: number;
|
|
134
|
+
bytes: number;
|
|
135
|
+
/** The per-call snapshot root for readers of the retained trace tree. */
|
|
136
|
+
directory?: string;
|
|
137
|
+
};
|
|
128
138
|
/** How much of the report was read — see {@link PlaywrightReportStatus}. */
|
|
129
139
|
status: PlaywrightReportStatus;
|
|
130
140
|
/** Where the report file is, for the full evidence. Always the runner's own file. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playwright-report.d.ts","sourceRoot":"","sources":["../src/playwright-report.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"playwright-report.d.ts","sourceRoot":"","sources":["../src/playwright-report.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,9 @@
|
|
|
14
14
|
* per-run file with the reporter's own `PLAYWRIGHT_JSON_OUTPUT_FILE` option, and this module turns
|
|
15
15
|
* that file into a small, bounded record on the tool result ({@link PlaywrightRunReport}). The
|
|
16
16
|
* whole file stays where it was written, so full evidence has a path; the record carries only what
|
|
17
|
-
* a diagnosis needs.
|
|
17
|
+
* a diagnosis needs. Before publication, execution tools retain bounded attachment copies beside
|
|
18
|
+
* the call's report. Later native runs may clean their output without invalidating these paths;
|
|
19
|
+
* `artifactRetention` reports omitted or unavailable copies honestly.
|
|
18
20
|
*
|
|
19
21
|
* Honesty rules, which every reader below follows:
|
|
20
22
|
*
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/** Keep a published run's bounded native attachments independent of later runner cleanup. */
|
|
2
|
+
import type { PlaywrightRunReport } from './playwright-report.js';
|
|
3
|
+
import type { ExecutionBackend } from './types.js';
|
|
4
|
+
/** A single attachment larger than this is reported unavailable instead of copied. */
|
|
5
|
+
export declare const MAX_RETAINED_ATTACHMENT_BYTES: number;
|
|
6
|
+
/** The total copied bytes for one published report. */
|
|
7
|
+
export declare const MAX_RETAINED_RUN_BYTES: number;
|
|
8
|
+
/**
|
|
9
|
+
* Copy only the bounded files the report names into its own per-call scratch directory.
|
|
10
|
+
* Native commands, configs and custom output directories are untouched. Missing, changed,
|
|
11
|
+
* oversized or unsupported files lose their references rather than point at mutable evidence.
|
|
12
|
+
* The derived record lives beside the call's existing report/log files and survives recollection.
|
|
13
|
+
*
|
|
14
|
+
* @param backend - The existing sandbox/local execution bond.
|
|
15
|
+
* @param report - This call's normalized, redacted machine report.
|
|
16
|
+
* @returns The same verdict/counts, with retained attachment paths or honest omissions.
|
|
17
|
+
*/
|
|
18
|
+
export declare function retainPlaywrightArtifacts(backend: Pick<ExecutionBackend, 'run'>, report: PlaywrightRunReport): Promise<PlaywrightRunReport>;
|
|
19
|
+
//# sourceMappingURL=report-attachment-retention.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"report-attachment-retention.d.ts","sourceRoot":"","sources":["../src/report-attachment-retention.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAElD,sFAAsF;AACtF,eAAO,MAAM,6BAA6B,QAAmB,CAAA;AAC7D,uDAAuD;AACvD,eAAO,MAAM,sBAAsB,QAAoB,CAAA;AAuDvD;;;;;;;;;GASG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,EACtC,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CAkD9B"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
/** A single attachment larger than this is reported unavailable instead of copied. */
|
|
2
|
+
export const MAX_RETAINED_ATTACHMENT_BYTES = 32 * 1024 * 1024;
|
|
3
|
+
/** The total copied bytes for one published report. */
|
|
4
|
+
export const MAX_RETAINED_RUN_BYTES = 128 * 1024 * 1024;
|
|
5
|
+
const COPY = String.raw `
|
|
6
|
+
const fs=require('node:fs'),path=require('node:path'),crypto=require('node:crypto');
|
|
7
|
+
const input=JSON.parse(Buffer.from(process.argv[1],'base64').toString('utf8'));
|
|
8
|
+
const digest=crypto.createHash('sha256').update(JSON.stringify(input.report)).digest('hex');
|
|
9
|
+
const cache=input.report.path+'.attachments-'+digest+'.json';
|
|
10
|
+
function previous(){
|
|
11
|
+
const value=JSON.parse(fs.readFileSync(cache,'utf8'));
|
|
12
|
+
if(value.schema!==1||value.report.path!==input.report.path)throw Error('invalid artifact record');
|
|
13
|
+
return value.report;
|
|
14
|
+
}
|
|
15
|
+
if(fs.existsSync(cache)){process.stdout.write(JSON.stringify(previous()));process.exit(0)}
|
|
16
|
+
const directory=fs.mkdtempSync(input.report.path+'.attachments-');
|
|
17
|
+
let bytes=0,omitted=0;
|
|
18
|
+
const report=input.report;
|
|
19
|
+
try{
|
|
20
|
+
for(let i=0;i<report.failures.length;i++){
|
|
21
|
+
const test=report.failures[i],kept=[];
|
|
22
|
+
for(let j=0;j<test.attachments.length;j++){
|
|
23
|
+
const attachment=test.attachments[j];
|
|
24
|
+
let destination;
|
|
25
|
+
try{
|
|
26
|
+
if(!path.isAbsolute(attachment.path))throw Error('relative attachment');
|
|
27
|
+
const before=fs.lstatSync(attachment.path);
|
|
28
|
+
if(!before.isFile()||before.size>input.single||bytes+before.size>input.total)throw Error('artifact unavailable or over budget');
|
|
29
|
+
const folder=path.join(directory,String(i));fs.mkdirSync(folder,{recursive:true,mode:0o700});
|
|
30
|
+
let name=path.basename(attachment.path);
|
|
31
|
+
if(name.length>100)name=crypto.createHash('sha256').update(name).digest('hex').slice(0,16)+path.extname(name).slice(0,12);
|
|
32
|
+
destination=path.join(folder,name);
|
|
33
|
+
if(fs.existsSync(destination))destination=path.join(folder,String(j)+'-'+name);
|
|
34
|
+
fs.copyFileSync(attachment.path,destination,fs.constants.COPYFILE_EXCL);
|
|
35
|
+
const after=fs.lstatSync(attachment.path);
|
|
36
|
+
if(before.ino!==after.ino||before.size!==after.size||before.mtimeMs!==after.mtimeMs)throw Error('artifact changed while copying');
|
|
37
|
+
fs.utimesSync(destination,before.atimeMs/1000,before.mtimeMs/1000);
|
|
38
|
+
fs.chmodSync(destination,0o400);bytes+=before.size;
|
|
39
|
+
kept.push({...attachment,path:destination});
|
|
40
|
+
}catch(error){if(destination)fs.rmSync(destination,{force:true});omitted++}
|
|
41
|
+
}
|
|
42
|
+
test.attachments=kept;
|
|
43
|
+
}
|
|
44
|
+
report.artifactRetention={status:omitted?'partial':'retained',directory,omittedAttachments:omitted,bytes};
|
|
45
|
+
const temporary=path.join(directory,'record.json');
|
|
46
|
+
fs.writeFileSync(temporary,JSON.stringify({schema:1,report}),{mode:0o600,flag:'wx'});
|
|
47
|
+
try{fs.linkSync(temporary,cache)}catch(error){
|
|
48
|
+
if(error.code!=='EEXIST')throw error;
|
|
49
|
+
const winner=previous();fs.rmSync(directory,{recursive:true,force:true});
|
|
50
|
+
process.stdout.write(JSON.stringify(winner));process.exit(0);
|
|
51
|
+
}
|
|
52
|
+
fs.rmSync(temporary);process.stdout.write(JSON.stringify(report));
|
|
53
|
+
}catch(error){fs.rmSync(directory,{recursive:true,force:true});throw error}
|
|
54
|
+
`;
|
|
55
|
+
const quote = (value) => `'${value.replace(/'/g, "'\\''")}'`;
|
|
56
|
+
/**
|
|
57
|
+
* Copy only the bounded files the report names into its own per-call scratch directory.
|
|
58
|
+
* Native commands, configs and custom output directories are untouched. Missing, changed,
|
|
59
|
+
* oversized or unsupported files lose their references rather than point at mutable evidence.
|
|
60
|
+
* The derived record lives beside the call's existing report/log files and survives recollection.
|
|
61
|
+
*
|
|
62
|
+
* @param backend - The existing sandbox/local execution bond.
|
|
63
|
+
* @param report - This call's normalized, redacted machine report.
|
|
64
|
+
* @returns The same verdict/counts, with retained attachment paths or honest omissions.
|
|
65
|
+
*/
|
|
66
|
+
export async function retainPlaywrightArtifacts(backend, report) {
|
|
67
|
+
if (!report.failures.some((test) => test.attachments.length > 0))
|
|
68
|
+
return report;
|
|
69
|
+
const unavailable = () => ({
|
|
70
|
+
...report,
|
|
71
|
+
failures: report.failures.map((test) => ({ ...test, attachments: [] })),
|
|
72
|
+
artifactRetention: {
|
|
73
|
+
status: 'unavailable',
|
|
74
|
+
omittedAttachments: report.failures.reduce((count, test) => count + test.attachments.length, 0),
|
|
75
|
+
bytes: 0,
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
try {
|
|
79
|
+
const input = Buffer.from(JSON.stringify({
|
|
80
|
+
report,
|
|
81
|
+
single: MAX_RETAINED_ATTACHMENT_BYTES,
|
|
82
|
+
total: MAX_RETAINED_RUN_BYTES,
|
|
83
|
+
})).toString('base64');
|
|
84
|
+
const result = await backend.run(`node -e ${quote(COPY)} ${quote(input)}`, {
|
|
85
|
+
timeout: 10_000,
|
|
86
|
+
budgetMs: 10_000,
|
|
87
|
+
});
|
|
88
|
+
if (result.exitCode !== 0)
|
|
89
|
+
return unavailable();
|
|
90
|
+
const retained = JSON.parse(result.stdout);
|
|
91
|
+
const directory = retained.artifactRetention?.directory;
|
|
92
|
+
const prefix = report.path + '.attachments-';
|
|
93
|
+
if (retained.path !== report.path ||
|
|
94
|
+
!Array.isArray(retained.failures) ||
|
|
95
|
+
typeof directory !== 'string' ||
|
|
96
|
+
!directory.startsWith(prefix) ||
|
|
97
|
+
!/^[A-Za-z0-9]{6}$/.test(directory.slice(prefix.length)) ||
|
|
98
|
+
retained.failures.some((test) => !Array.isArray(test.attachments) ||
|
|
99
|
+
test.attachments.some((item) => !item.path.startsWith(directory + '/') || item.path.split('/').includes('..'))))
|
|
100
|
+
return unavailable();
|
|
101
|
+
return retained;
|
|
102
|
+
}
|
|
103
|
+
catch (_error) {
|
|
104
|
+
// Retention is optional evidence; a failed copy never publishes mutable fallback paths.
|
|
105
|
+
return unavailable();
|
|
106
|
+
}
|
|
107
|
+
}
|
package/dist/tools.d.ts
CHANGED
|
@@ -7,6 +7,19 @@
|
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
9
|
import type { AITool } from '@molecule/api-ai';
|
|
10
|
+
import { type PlaywrightRunReport } from './playwright-report.js';
|
|
11
|
+
/**
|
|
12
|
+
* One report file's bounded facts and retained native attachments, or honest omissions.
|
|
13
|
+
*
|
|
14
|
+
* A report that is not there is NOT "the run failed nothing": `summarizePlaywrightReport` answers
|
|
15
|
+
* `missing`, and every reader treats that as no machine data rather than as a clean run.
|
|
16
|
+
*
|
|
17
|
+
* @param backend - The project's execution backend.
|
|
18
|
+
* @param path - The report file's absolute path (`/tmp/…`).
|
|
19
|
+
* @param sanitize - The consumer's redactor for the error text the record carries.
|
|
20
|
+
* @returns The bounded record with per-call attachment copies; never a verdict.
|
|
21
|
+
*/
|
|
22
|
+
export declare function readPlaywrightRunReport(backend: Pick<ExecutionBackend, 'readFile' | 'run'>, path: string, sanitize: (text: string) => string): Promise<PlaywrightRunReport>;
|
|
10
23
|
/**
|
|
11
24
|
* The command that stops a running background task, read from the sandbox's own pid files.
|
|
12
25
|
*
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AA2B9C,OAAO,EAIL,KAAK,mBAAmB,EAEzB,MAAM,wBAAwB,CAAA;AAsC/B;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,GAAG,KAAK,CAAC,EACnD,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAmB9B;AAuLD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAahG;AAwdD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAkInE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAEA,CAAA;AAE9B;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,wBAAwB,QAI6C,CAAA;AA0DlF;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUhE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGtE;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,qBAAqB;IACpC,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,8FAA8F;IAC9F,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC5B;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAA;AAoBpF;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,CAAC,GACxE,qBAAqB,CAkBvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,qBAAqB,GAC5B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiCxB;AA2GD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,MAAM,EAAE,CA8mGxF"}
|
package/dist/tools.js
CHANGED
|
@@ -16,6 +16,7 @@ import { guardToolExecute, missingParamError, ToolInputError } from './input-nor
|
|
|
16
16
|
import { diffLineCount } from './line-diff.js';
|
|
17
17
|
import { pipelineExitCodeNote } from './pipeline-exit-note.js';
|
|
18
18
|
import { commandWritesReportTo, PLAYWRIGHT_REPORT_SUFFIX, playwrightReportPathFor, summarizePlaywrightReport, } from './playwright-report.js';
|
|
19
|
+
import { retainPlaywrightArtifacts } from './report-attachment-retention.js';
|
|
19
20
|
import { TOOL_SCHEMAS } from './schemas.js';
|
|
20
21
|
import { foregroundBrowserProbe, foregroundServerCommand, SERVER_OVER_BUDGET_ADVICE, serverCommandRefusal, startsServerProgram, } from './server-command.js';
|
|
21
22
|
import { leadingSleepPeek } from './sleep-peek.js';
|
|
@@ -43,7 +44,7 @@ const outputFileByTask = new Map();
|
|
|
43
44
|
*/
|
|
44
45
|
const reportByTask = new Map();
|
|
45
46
|
/**
|
|
46
|
-
* One report file's bounded facts
|
|
47
|
+
* One report file's bounded facts and retained native attachments, or honest omissions.
|
|
47
48
|
*
|
|
48
49
|
* A report that is not there is NOT "the run failed nothing": `summarizePlaywrightReport` answers
|
|
49
50
|
* `missing`, and every reader treats that as no machine data rather than as a clean run.
|
|
@@ -51,9 +52,9 @@ const reportByTask = new Map();
|
|
|
51
52
|
* @param backend - The project's execution backend.
|
|
52
53
|
* @param path - The report file's absolute path (`/tmp/…`).
|
|
53
54
|
* @param sanitize - The consumer's redactor for the error text the record carries.
|
|
54
|
-
* @returns The bounded record; never a verdict.
|
|
55
|
+
* @returns The bounded record with per-call attachment copies; never a verdict.
|
|
55
56
|
*/
|
|
56
|
-
async function readPlaywrightRunReport(backend, path, sanitize) {
|
|
57
|
+
export async function readPlaywrightRunReport(backend, path, sanitize) {
|
|
57
58
|
let text;
|
|
58
59
|
try {
|
|
59
60
|
text = await backend.readFile(path);
|
|
@@ -71,7 +72,7 @@ async function readPlaywrightRunReport(backend, path, sanitize) {
|
|
|
71
72
|
omittedFailures: 0,
|
|
72
73
|
};
|
|
73
74
|
}
|
|
74
|
-
return summarizePlaywrightReport(text, { path, sanitize });
|
|
75
|
+
return retainPlaywrightArtifacts(backend, summarizePlaywrightReport(text, { path, sanitize }));
|
|
75
76
|
}
|
|
76
77
|
/**
|
|
77
78
|
* Recovered legacy task ids whose command ENDS with a backgrounded statement (`… &`).
|
|
@@ -1072,7 +1073,9 @@ function packageCatalog(path) {
|
|
|
1072
1073
|
*/
|
|
1073
1074
|
export function buildTools(backend, config) {
|
|
1074
1075
|
const { include, exclude, pathGuards = true, symlinkGuards = false, redactSecrets: doRedact = true, blockDangerousCommands = false, blockCommand, execTimeoutMs = 120_000, commandBudgetMs, overCeilingGraceMs = OVER_CEILING_GRACE_MS, searchExcludedDirs, outlineLargeHtml, excludedTestTitles, requiredSuiteEnv, suiteRunMs, onAfterWrite, onFileDiff, onFileChange, } = config ?? {};
|
|
1075
|
-
|
|
1076
|
+
// Directory URLs and backend callers can supply trailing slashes or dot
|
|
1077
|
+
// segments. Compare every lexical and realpath guard against the same root.
|
|
1078
|
+
const root = posix.resolve(backend.projectRoot);
|
|
1076
1079
|
// A host-filesystem backend with escape guards off is the combination the
|
|
1077
1080
|
// audit flagged: `pathGuards` off lets `..` paths out of the workspace,
|
|
1078
1081
|
// and `symlinkGuards` off lets a workspace SYMLINK redirect reads/writes
|
|
@@ -1235,7 +1238,9 @@ export function buildTools(backend, config) {
|
|
|
1235
1238
|
try {
|
|
1236
1239
|
const result = await backend.run(`readlink -f ${shellQuote(path)} 2>/dev/null || echo ${shellQuote(path)}`, { timeout: 5000 });
|
|
1237
1240
|
const realPath = result.stdout.trim();
|
|
1238
|
-
if (realPath &&
|
|
1241
|
+
if (realPath &&
|
|
1242
|
+
realPath !== root &&
|
|
1243
|
+
!realPath.startsWith(root === '/' ? '/' : root + '/')) {
|
|
1239
1244
|
return 'Access denied: path resolves outside the project workspace';
|
|
1240
1245
|
}
|
|
1241
1246
|
return null;
|
package/dist/utilities.d.ts
CHANGED
|
@@ -497,7 +497,7 @@ export declare function suiteRunPriorityLaunch(command: string, launch: string):
|
|
|
497
497
|
*/
|
|
498
498
|
export declare function checkBlockedCommand(command: string): string | null;
|
|
499
499
|
/**
|
|
500
|
-
* Normalize
|
|
500
|
+
* Normalize the project root and resolve a path absolutely within it.
|
|
501
501
|
* Empty string and '/' both resolve to projectRoot.
|
|
502
502
|
* Rejects paths that escape via traversal or absolute paths outside root.
|
|
503
503
|
*
|
|
@@ -507,7 +507,7 @@ export declare function checkBlockedCommand(command: string): string | null;
|
|
|
507
507
|
*/
|
|
508
508
|
export declare function resolvePath(path: string, projectRoot: string): string;
|
|
509
509
|
/**
|
|
510
|
-
* Whether a tool path points outside the project root
|
|
510
|
+
* Whether a tool path points outside the normalized project root (an
|
|
511
511
|
* absolute path elsewhere, or a `..` that climbs out). {@link resolvePath}
|
|
512
512
|
* clamps such a path to the root; a file tool must refuse it instead of
|
|
513
513
|
* answering about the root — a `list_files /tmp/x` used to return the
|
package/dist/utilities.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAaH,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAG3E,OAAO,EACL,KAAK,mBAAmB,EAExB,KAAK,aAAa,EAMnB,MAAM,oBAAoB,CAAA;AAE3B;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAS5C;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,GAAG,MAAM,KAAG,MAEE,CAAA;AAuGhD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;AAaD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKhF;AAgFD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE7D;AAyFD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,MAAM,CAUpF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAElE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQnE;AAuDD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,8BAA8B,0CAA0C,CAAA;AA0DrF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,mBAAmB,EAC7B,UAAU,CAAC,EAAE,MAAM,GAClB;IACD,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAyQA;AA8GD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,MAAM,GACjB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAwBhD;AA+BD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ5D;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE1D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA8BpE;AAuBD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,MAAM,EAAE,GACvB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAsC3D;AAKD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CA8BtC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG;IACpD,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB,CAEA;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAG/D;AA4KD,wEAAwE;AACxE,MAAM,WAAW,gBAAgB;IAC/B,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAA;CAChB;AA+HD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAG3E;AAED,oFAAoF;AACpF,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,KAAK,EAAE,OAAO,CAAA;IACd;;;;;OAKG;IACH,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,yBAAyB,CAkBpF;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GACb;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAalC;AA6HD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA4BlE;AAID;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAKrE;AAgBD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAIxE;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAWT;AAiBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAQpD;AAED;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,KAAK,CAAA;AAE7C;;;GAGG;AACH,eAAO,MAAM,eAAe,QAEQ,CAAA;AAEpC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAiBhE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGvD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAe9E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGxD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GACX,MAAM,CAKR;AAkCD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAIvE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU1E;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI9E;AAID,yCAAyC;AACzC,eAAO,MAAM,aAAa,QAAkB,CAAA;AAC5C,8CAA8C;AAC9C,eAAO,MAAM,cAAc,QAAmB,CAAA;AAC9C,kDAAkD;AAClD,eAAO,MAAM,eAAe,QAAa,CAAA;AACzC;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,KAAK,CAAA;AAE1C;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CA6BhG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAY5E;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,KAAK,CAAA;AAEtC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,mBAAmB,QAAS,CAAA;AAEzC;;;;;;;GAOG;AACH,eAAO,MAAM,0BAA0B,OAAQ,CAAA;AAE/C;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,QAAmD,CAAA;AAErF;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,QAAwB,CAAA;AAE3D;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,qBAAqB,QAAY,CAAA;AAE9C,qEAAqE;AACrE,eAAO,MAAM,sBAAsB,MAAM,CAAA;AAKzC,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAa,GAAG,MAAM,GAAG,IAAI,CAyC3E;AAED,0BAA0B;AAC1B,eAAO,MAAM,kBAAkB,KAAK,CAAA;AACpC,wBAAwB;AACxB,eAAO,MAAM,gBAAgB,MAAM,CAAA;AAEnC;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,mHAW/B,CAAA;AAEV;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAG7D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAOnE;AAmFD;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBjD;AAED,kEAAkE;AAClE,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAEvC,qEAAqE;AACrE,eAAO,MAAM,kBAAkB,OAAO,CAAA;AAEtC;;;GAGG;AACH,eAAO,MAAM,uBAAuB,0KAC4G,CAAA;AAEhJ;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAM3E;AAED,gEAAgE;AAChE,eAAO,MAAM,0BAA0B,QAAS,CAAA;AAEhD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAGrE;AAED,0GAA0G;AAC1G,eAAO,MAAM,sBAAsB,QAA6B,CAAA;AAEhE,8DAA8D;AAC9D,MAAM,WAAW,cAAc;IAC7B,sFAAsF;IACtF,IAAI,EAAE,MAAM,CAAA;IACZ,yFAAyF;IACzF,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAGvE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAIzE;AAED;;;GAGG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAA;AAEtC,0DAA0D;AAC1D,MAAM,WAAW,UAAU;IACzB,gGAAgG;IAChG,KAAK,EAAE,MAAM,CAAA;IACb,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAA;IACb,qFAAqF;IACrF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAED,0DAA0D;AAC1D,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IACb,0FAA0F;IAC1F,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,sFAAsF;IACtF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,sDAAsD;IACtD,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB;AAkUD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CA+CrE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,SAAS,MAAM,EAAO,EAChC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAO,GACzD,OAAO,CAkBT;AA8FD,2FAA2F;AAC3F,eAAO,MAAM,wBAAwB,IAAI,CAAA;AAEzC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,OAAO,CAAA;AAErC;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,QAA2B,CAAA;AAE5D;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,KAAK,CAAA;AAKvC,oFAAoF;AACpF,eAAO,MAAM,0BAA0B,IAAI,CAAA;AA8D3C;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,IAAI,CAAA;AAEtC,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAA;IACb,6EAA6E;IAC7E,KAAK,EAAE,MAAM,EAAE,CAAA;IACf;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,IAAI,CAAA;IACzB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;OAIG;IACH,KAAK,CAAC,EAAE,UAAU,EAAE,CAAA;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAA;AAsIvC;;;GAGG;AACH,eAAO,MAAM,sBAAsB,IAAI,CAAA;AAuCvC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA2BhE;AA+DD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,gBAAgB,GAAG,IAAI,EAC9B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GACtB,cAAc,GAAG,IAAI,CAiCvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,gBAAgB,GAAG,IAAI,EAC9B,SAAS,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAC3C,cAAc,GAAG,IAAI,CAOvB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAQ7F;AAED,2DAA2D;AAC3D,MAAM,WAAW,YAAY;IAC3B,gGAAgG;IAChG,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,yFAAyF;IACzF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,kEAAkE;IAClE,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;;OAKG;IACH,IAAI,EAAE,cAAc,CAAA;IACpB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,2EAA2E;AAC3E,MAAM,WAAW,eAAe;IAC9B,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAA;IACb,uEAAuE;IACvE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACxB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC7B;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,GAAE,SAAS,MAAM,EAAO,GAAG,YAAY,EAAE,CAE7F;AAsPD,uGAAuG;AACvG,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,QAAQ,CAAA;AA0BtD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAI1E;AA+FD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,UAAU,GAAE,SAAS,eAAe,EAAO,GAC1C,MAAM,GAAG,IAAI,CAoCf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,SAAS,MAAM,EAAO,EAChC,GAAG,CAAC,EAAE;IACJ,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,GAAG,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;CAC/B,EACD,UAAU,GAAE,SAAS,eAAe,EAAO;AAC3C;;;;;GAKG;AACH,cAAc,GAAE,SAAS,MAAM,EAAO,GACrC,MAAM,GAAG,IAAI,CAkHf;AA+GD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,GAAG,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;CAAE,EAC9F,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,QAAQ,GAAE,SAAS,MAAM,EAAO,GAC/B,MAAM,GAAG,IAAI,CAsBf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,gBAAgB,EACvB,CAAC,EAAE;IACD,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;IACjC,GAAG,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;KAAE,CAAA;IACvE,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,GACA,MAAM,CAmIR;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAsCf;AAED,qEAAqE;AACrE,eAAO,MAAM,eAAe,QAA0C,CAAA;AAWtE;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA+B7D;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB,GAAG,MAAM,GAAG,IAAI,CAKhB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAgBvC"}
|
|
1
|
+
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"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"}
|
package/dist/utilities.js
CHANGED
|
@@ -1856,7 +1856,7 @@ export function checkBlockedCommand(command) {
|
|
|
1856
1856
|
}
|
|
1857
1857
|
// ── Path resolution ───────────────────────────────────────────────────────────
|
|
1858
1858
|
/**
|
|
1859
|
-
* Normalize
|
|
1859
|
+
* Normalize the project root and resolve a path absolutely within it.
|
|
1860
1860
|
* Empty string and '/' both resolve to projectRoot.
|
|
1861
1861
|
* Rejects paths that escape via traversal or absolute paths outside root.
|
|
1862
1862
|
*
|
|
@@ -1865,11 +1865,12 @@ export function checkBlockedCommand(command) {
|
|
|
1865
1865
|
* @returns A normalized absolute path confined to `projectRoot`.
|
|
1866
1866
|
*/
|
|
1867
1867
|
export function resolvePath(path, projectRoot) {
|
|
1868
|
+
const root = posix.resolve(projectRoot);
|
|
1868
1869
|
if (path === '' || path === '/')
|
|
1869
|
-
return
|
|
1870
|
-
const resolved = rootedPath(path,
|
|
1871
|
-
if (resolved !==
|
|
1872
|
-
return
|
|
1870
|
+
return root;
|
|
1871
|
+
const resolved = rootedPath(path, root);
|
|
1872
|
+
if (resolved !== root && !resolved.startsWith(root === '/' ? '/' : root + '/'))
|
|
1873
|
+
return root;
|
|
1873
1874
|
return resolved;
|
|
1874
1875
|
}
|
|
1875
1876
|
/**
|
|
@@ -1886,7 +1887,7 @@ function rootedPath(path, projectRoot) {
|
|
|
1886
1887
|
return clean.startsWith('/') ? posix.normalize(clean) : posix.normalize(`${projectRoot}/${clean}`);
|
|
1887
1888
|
}
|
|
1888
1889
|
/**
|
|
1889
|
-
* Whether a tool path points outside the project root
|
|
1890
|
+
* Whether a tool path points outside the normalized project root (an
|
|
1890
1891
|
* absolute path elsewhere, or a `..` that climbs out). {@link resolvePath}
|
|
1891
1892
|
* clamps such a path to the root; a file tool must refuse it instead of
|
|
1892
1893
|
* answering about the root — a `list_files /tmp/x` used to return the
|
|
@@ -1899,8 +1900,9 @@ function rootedPath(path, projectRoot) {
|
|
|
1899
1900
|
export function isOutsideRoot(path, projectRoot) {
|
|
1900
1901
|
if (path === '' || path === '/')
|
|
1901
1902
|
return false;
|
|
1902
|
-
const
|
|
1903
|
-
|
|
1903
|
+
const root = posix.resolve(projectRoot);
|
|
1904
|
+
const resolved = rootedPath(path, root);
|
|
1905
|
+
return resolved !== root && !resolved.startsWith(root === '/' ? '/' : root + '/');
|
|
1904
1906
|
}
|
|
1905
1907
|
/**
|
|
1906
1908
|
* Whether a command's FIRST statement already changes into `directory`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@molecule/api-ai-tools",
|
|
3
|
-
"version": "1.14.
|
|
3
|
+
"version": "1.14.8",
|
|
4
4
|
"description": "Shared AI agent tools with backend abstraction for sandbox and local execution",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"@molecule/api-ai": "^1.0.1"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@molecule/api-ai": "1.
|
|
34
|
+
"@molecule/api-ai": "1.4.0",
|
|
35
35
|
"@types/node": "26.6.5",
|
|
36
36
|
"esbuild": "0.28.2",
|
|
37
37
|
"typescript": "6.0.3",
|