@cortexkit/aft-opencode 0.2.0 → 0.3.0
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/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -0
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -3
- package/dist/index.js.map +1 -1
- package/dist/metadata-store.d.ts +29 -0
- package/dist/metadata-store.d.ts.map +1 -0
- package/dist/metadata-store.js +53 -0
- package/dist/metadata-store.js.map +1 -0
- package/dist/patch-parser.d.ts +33 -0
- package/dist/patch-parser.d.ts.map +1 -0
- package/dist/patch-parser.js +237 -0
- package/dist/patch-parser.js.map +1 -0
- package/dist/tools/ast.d.ts.map +1 -1
- package/dist/tools/ast.js +159 -62
- package/dist/tools/ast.js.map +1 -1
- package/dist/tools/editing.d.ts +3 -2
- package/dist/tools/editing.d.ts.map +1 -1
- package/dist/tools/editing.js +4 -146
- package/dist/tools/editing.js.map +1 -1
- package/dist/tools/hoisted.d.ts +26 -0
- package/dist/tools/hoisted.d.ts.map +1 -0
- package/dist/tools/hoisted.js +749 -0
- package/dist/tools/hoisted.js.map +1 -0
- package/dist/tools/imports.d.ts.map +1 -1
- package/dist/tools/imports.js +15 -5
- package/dist/tools/imports.js.map +1 -1
- package/dist/tools/lsp.d.ts.map +1 -1
- package/dist/tools/lsp.js +25 -108
- package/dist/tools/lsp.js.map +1 -1
- package/dist/tools/navigation.d.ts.map +1 -1
- package/dist/tools/navigation.js +9 -3
- package/dist/tools/navigation.js.map +1 -1
- package/dist/tools/reading.d.ts +2 -1
- package/dist/tools/reading.d.ts.map +1 -1
- package/dist/tools/reading.js +7 -70
- package/dist/tools/reading.js.map +1 -1
- package/dist/tools/refactoring.d.ts.map +1 -1
- package/dist/tools/refactoring.js +16 -5
- package/dist/tools/refactoring.js.map +1 -1
- package/dist/tools/safety.d.ts.map +1 -1
- package/dist/tools/safety.js +11 -6
- package/dist/tools/safety.js.map +1 -1
- package/dist/tools/structure.d.ts.map +1 -1
- package/dist/tools/structure.js +22 -7
- package/dist/tools/structure.js.map +1 -1
- package/package.json +6 -6
package/dist/config.d.ts
CHANGED
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA6BxB,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA6BxB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAe1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AA6IxD;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAwBjE"}
|
package/dist/config.js
CHANGED
|
@@ -35,6 +35,12 @@ export const AftConfigSchema = z.object({
|
|
|
35
35
|
formatter: z.record(z.string(), FormatterEnum).optional(),
|
|
36
36
|
/** Per-language type checker overrides. Keys: "typescript", "python", "rust", "go". */
|
|
37
37
|
checker: z.record(z.string(), CheckerEnum).optional(),
|
|
38
|
+
/**
|
|
39
|
+
* Replace opencode's built-in read/write/edit/apply_patch tools with AFT's
|
|
40
|
+
* faster Rust implementations. Adds backup tracking, auto-formatting,
|
|
41
|
+
* inline diagnostics, and permission checks. Default: true.
|
|
42
|
+
*/
|
|
43
|
+
hoist_builtin_tools: z.boolean().optional(),
|
|
38
44
|
});
|
|
39
45
|
// ---------------------------------------------------------------------------
|
|
40
46
|
// JSONC parsing (same approach as oh-my-opencode)
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAmB,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC;IAC3B,OAAO;IACP,UAAU;IACV,MAAM;IACN,MAAM;IACN,OAAO;IACP,SAAS;IACT,WAAW;IACX,OAAO;IACP,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC;IACzB,KAAK;IACL,OAAO;IACP,SAAS;IACT,MAAM;IACN,OAAO;IACP,IAAI;IACJ,aAAa;IACb,MAAM;CACP,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,+DAA+D;IAC/D,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACtC,uFAAuF;IACvF,gBAAgB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;IACvD,oFAAoF;IACpF,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,QAAQ,EAAE;IACzD,uFAAuF;IACvF,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,14 +7,15 @@ import type { Plugin } from "@opencode-ai/plugin";
|
|
|
7
7
|
* - Project: <project>/.opencode/aft.jsonc (or .json)
|
|
8
8
|
*
|
|
9
9
|
* Tools organized into groups:
|
|
10
|
-
* -
|
|
11
|
-
* -
|
|
10
|
+
* - Hoisted (default): read, write, edit, apply_patch, ast_grep_search, ast_grep_replace
|
|
11
|
+
* - File ops: aft_delete, aft_move
|
|
12
|
+
* - Reading: aft_outline
|
|
12
13
|
* - Safety: aft_safety
|
|
13
14
|
* - Imports: aft_import
|
|
14
15
|
* - Structure: aft_transform
|
|
15
16
|
* - Navigation: aft_navigate
|
|
16
17
|
* - Refactoring: aft_refactor
|
|
17
|
-
* -
|
|
18
|
+
* - LSP: aft_lsp_diagnostics (inline diagnostics on edits are automatic)
|
|
18
19
|
*/
|
|
19
20
|
declare const plugin: Plugin;
|
|
20
21
|
export default plugin;
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAiBlD;;;;;;;;;;;;;;;;;GAiBG;AACH,QAAA,MAAM,MAAM,EAAE,MA+Cb,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { loadAftConfig } from "./config.js";
|
|
2
|
+
import { consumeToolMetadata } from "./metadata-store.js";
|
|
2
3
|
import { BridgePool } from "./pool.js";
|
|
3
4
|
import { findBinary } from "./resolver.js";
|
|
4
5
|
import { astTools } from "./tools/ast.js";
|
|
5
6
|
import { editingTools } from "./tools/editing.js";
|
|
7
|
+
import { aftPrefixedTools, hoistedTools } from "./tools/hoisted.js";
|
|
6
8
|
import { importTools } from "./tools/imports.js";
|
|
7
9
|
import { lspTools } from "./tools/lsp.js";
|
|
8
10
|
import { navigationTools } from "./tools/navigation.js";
|
|
@@ -18,14 +20,15 @@ import { structureTools } from "./tools/structure.js";
|
|
|
18
20
|
* - Project: <project>/.opencode/aft.jsonc (or .json)
|
|
19
21
|
*
|
|
20
22
|
* Tools organized into groups:
|
|
21
|
-
* -
|
|
22
|
-
* -
|
|
23
|
+
* - Hoisted (default): read, write, edit, apply_patch, ast_grep_search, ast_grep_replace
|
|
24
|
+
* - File ops: aft_delete, aft_move
|
|
25
|
+
* - Reading: aft_outline
|
|
23
26
|
* - Safety: aft_safety
|
|
24
27
|
* - Imports: aft_import
|
|
25
28
|
* - Structure: aft_transform
|
|
26
29
|
* - Navigation: aft_navigate
|
|
27
30
|
* - Refactoring: aft_refactor
|
|
28
|
-
* -
|
|
31
|
+
* - LSP: aft_lsp_diagnostics (inline diagnostics on edits are automatic)
|
|
29
32
|
*/
|
|
30
33
|
const plugin = async (input) => {
|
|
31
34
|
const binaryPath = await findBinary();
|
|
@@ -45,6 +48,9 @@ const plugin = async (input) => {
|
|
|
45
48
|
const ctx = { pool, client: input.client, config: aftConfig };
|
|
46
49
|
return {
|
|
47
50
|
tool: {
|
|
51
|
+
// When hoisting enabled (default): override opencode built-ins (read, write, edit, apply_patch)
|
|
52
|
+
// When disabled: register with aft_ prefix (aft_read, aft_write, aft_edit, aft_apply_patch)
|
|
53
|
+
...(aftConfig.hoist_builtin_tools !== false ? hoistedTools(ctx) : aftPrefixedTools(ctx)),
|
|
48
54
|
...readingTools(ctx),
|
|
49
55
|
...editingTools(ctx),
|
|
50
56
|
...safetyTools(ctx),
|
|
@@ -55,6 +61,18 @@ const plugin = async (input) => {
|
|
|
55
61
|
...refactoringTools(ctx),
|
|
56
62
|
...lspTools(ctx),
|
|
57
63
|
},
|
|
64
|
+
// Restore metadata that fromPlugin() overwrites (opencode bug workaround)
|
|
65
|
+
"tool.execute.after": async (input, output) => {
|
|
66
|
+
if (!output)
|
|
67
|
+
return;
|
|
68
|
+
const stored = consumeToolMetadata(input.sessionID, input.callID);
|
|
69
|
+
if (stored) {
|
|
70
|
+
if (stored.title)
|
|
71
|
+
output.title = stored.title;
|
|
72
|
+
if (stored.metadata)
|
|
73
|
+
output.metadata = { ...output.metadata, ...stored.metadata };
|
|
74
|
+
}
|
|
75
|
+
},
|
|
58
76
|
dispose: () => pool.shutdown(),
|
|
59
77
|
};
|
|
60
78
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pending tool metadata store.
|
|
3
|
+
*
|
|
4
|
+
* OpenCode's `fromPlugin()` wrapper always replaces plugin metadata with
|
|
5
|
+
* `{ truncated, outputPath }`, discarding title and custom metadata.
|
|
6
|
+
*
|
|
7
|
+
* This store captures metadata during execute(), then the `tool.execute.after`
|
|
8
|
+
* hook consumes it and merges it back before the final part is written.
|
|
9
|
+
*
|
|
10
|
+
* Flow:
|
|
11
|
+
* execute() → storeToolMetadata(sessionID, callID, data)
|
|
12
|
+
* fromPlugin() → overwrites metadata with { truncated }
|
|
13
|
+
* tool.execute.after → consumeToolMetadata(sessionID, callID) → merges back
|
|
14
|
+
*/
|
|
15
|
+
export interface PendingToolMetadata {
|
|
16
|
+
title?: string;
|
|
17
|
+
metadata?: Record<string, unknown>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Store metadata to be restored after fromPlugin() overwrites it.
|
|
21
|
+
* Called from tool execute() functions.
|
|
22
|
+
*/
|
|
23
|
+
export declare function storeToolMetadata(sessionID: string, callID: string, data: PendingToolMetadata): void;
|
|
24
|
+
/**
|
|
25
|
+
* Consume stored metadata (one-time read, removes from store).
|
|
26
|
+
* Called from tool.execute.after hook.
|
|
27
|
+
*/
|
|
28
|
+
export declare function consumeToolMetadata(sessionID: string, callID: string): PendingToolMetadata | undefined;
|
|
29
|
+
//# sourceMappingURL=metadata-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata-store.d.ts","sourceRoot":"","sources":["../src/metadata-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAmBD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,mBAAmB,GACxB,IAAI,CAMN;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,mBAAmB,GAAG,SAAS,CASjC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pending tool metadata store.
|
|
3
|
+
*
|
|
4
|
+
* OpenCode's `fromPlugin()` wrapper always replaces plugin metadata with
|
|
5
|
+
* `{ truncated, outputPath }`, discarding title and custom metadata.
|
|
6
|
+
*
|
|
7
|
+
* This store captures metadata during execute(), then the `tool.execute.after`
|
|
8
|
+
* hook consumes it and merges it back before the final part is written.
|
|
9
|
+
*
|
|
10
|
+
* Flow:
|
|
11
|
+
* execute() → storeToolMetadata(sessionID, callID, data)
|
|
12
|
+
* fromPlugin() → overwrites metadata with { truncated }
|
|
13
|
+
* tool.execute.after → consumeToolMetadata(sessionID, callID) → merges back
|
|
14
|
+
*/
|
|
15
|
+
const pendingStore = new Map();
|
|
16
|
+
const STALE_TIMEOUT_MS = 15 * 60 * 1000;
|
|
17
|
+
function makeKey(sessionID, callID) {
|
|
18
|
+
return `${sessionID}:${callID}`;
|
|
19
|
+
}
|
|
20
|
+
function cleanupStaleEntries() {
|
|
21
|
+
const now = Date.now();
|
|
22
|
+
for (const [key, entry] of pendingStore) {
|
|
23
|
+
if (now - entry.storedAt > STALE_TIMEOUT_MS) {
|
|
24
|
+
pendingStore.delete(key);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Store metadata to be restored after fromPlugin() overwrites it.
|
|
30
|
+
* Called from tool execute() functions.
|
|
31
|
+
*/
|
|
32
|
+
export function storeToolMetadata(sessionID, callID, data) {
|
|
33
|
+
cleanupStaleEntries();
|
|
34
|
+
pendingStore.set(makeKey(sessionID, callID), {
|
|
35
|
+
...data,
|
|
36
|
+
storedAt: Date.now(),
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Consume stored metadata (one-time read, removes from store).
|
|
41
|
+
* Called from tool.execute.after hook.
|
|
42
|
+
*/
|
|
43
|
+
export function consumeToolMetadata(sessionID, callID) {
|
|
44
|
+
const key = makeKey(sessionID, callID);
|
|
45
|
+
const stored = pendingStore.get(key);
|
|
46
|
+
if (stored) {
|
|
47
|
+
pendingStore.delete(key);
|
|
48
|
+
const { storedAt: _, ...data } = stored;
|
|
49
|
+
return data;
|
|
50
|
+
}
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=metadata-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata-store.js","sourceRoot":"","sources":["../src/metadata-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAOH,MAAM,YAAY,GAAG,IAAI,GAAG,EAAsD,CAAC;AAEnF,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAExC,SAAS,OAAO,CAAC,SAAiB,EAAE,MAAc;IAChD,OAAO,GAAG,SAAS,IAAI,MAAM,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,mBAAmB;IAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,YAAY,EAAE,CAAC;QACxC,IAAI,GAAG,GAAG,KAAK,CAAC,QAAQ,GAAG,gBAAgB,EAAE,CAAC;YAC5C,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAAiB,EACjB,MAAc,EACd,IAAyB;IAEzB,mBAAmB,EAAE,CAAC;IACtB,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE;QAC3C,GAAG,IAAI;QACP,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE;KACrB,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,SAAiB,EACjB,MAAc;IAEd,MAAM,GAAG,GAAG,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,MAAM,EAAE,CAAC;QACX,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal patch parser for the opencode `*** Begin Patch` format.
|
|
3
|
+
* Ported from opencode's internal Patch module.
|
|
4
|
+
*/
|
|
5
|
+
export interface AddHunk {
|
|
6
|
+
type: "add";
|
|
7
|
+
path: string;
|
|
8
|
+
contents: string;
|
|
9
|
+
}
|
|
10
|
+
export interface DeleteHunk {
|
|
11
|
+
type: "delete";
|
|
12
|
+
path: string;
|
|
13
|
+
}
|
|
14
|
+
export interface UpdateFileChunk {
|
|
15
|
+
old_lines: string[];
|
|
16
|
+
new_lines: string[];
|
|
17
|
+
change_context?: string;
|
|
18
|
+
is_end_of_file?: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface UpdateHunk {
|
|
21
|
+
type: "update";
|
|
22
|
+
path: string;
|
|
23
|
+
move_path?: string;
|
|
24
|
+
chunks: UpdateFileChunk[];
|
|
25
|
+
}
|
|
26
|
+
export type Hunk = AddHunk | DeleteHunk | UpdateHunk;
|
|
27
|
+
export declare function parsePatch(patchText: string): Hunk[];
|
|
28
|
+
/**
|
|
29
|
+
* Apply update chunks to the original file content, producing new content.
|
|
30
|
+
* Ported from opencode's deriveNewContentsFromChunks.
|
|
31
|
+
*/
|
|
32
|
+
export declare function applyUpdateChunks(originalContent: string, filePath: string, chunks: UpdateFileChunk[]): string;
|
|
33
|
+
//# sourceMappingURL=patch-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patch-parser.d.ts","sourceRoot":"","sources":["../src/patch-parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,KAAK,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;AAgHrD,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,CA2CpD;AAyED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,eAAe,EAAE,MAAM,EACvB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,eAAe,EAAE,GACxB,MAAM,CA+DR"}
|
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Minimal patch parser for the opencode `*** Begin Patch` format.
|
|
3
|
+
* Ported from opencode's internal Patch module.
|
|
4
|
+
*/
|
|
5
|
+
function stripHeredoc(input) {
|
|
6
|
+
const heredocMatch = input.match(/^(?:cat\s+)?<<['"]?(\w+)['"]?\s*\n([\s\S]*?)\n\1\s*$/);
|
|
7
|
+
return heredocMatch ? heredocMatch[2] : input;
|
|
8
|
+
}
|
|
9
|
+
function parsePatchHeader(lines, startIdx) {
|
|
10
|
+
const line = lines[startIdx];
|
|
11
|
+
if (line.startsWith("*** Add File:")) {
|
|
12
|
+
const filePath = line.slice("*** Add File:".length).trim();
|
|
13
|
+
return filePath ? { filePath, nextIdx: startIdx + 1 } : null;
|
|
14
|
+
}
|
|
15
|
+
if (line.startsWith("*** Delete File:")) {
|
|
16
|
+
const filePath = line.slice("*** Delete File:".length).trim();
|
|
17
|
+
return filePath ? { filePath, nextIdx: startIdx + 1 } : null;
|
|
18
|
+
}
|
|
19
|
+
if (line.startsWith("*** Update File:")) {
|
|
20
|
+
const filePath = line.slice("*** Update File:".length).trim();
|
|
21
|
+
let movePath;
|
|
22
|
+
let nextIdx = startIdx + 1;
|
|
23
|
+
if (nextIdx < lines.length && lines[nextIdx].startsWith("*** Move to:")) {
|
|
24
|
+
movePath = lines[nextIdx].slice("*** Move to:".length).trim();
|
|
25
|
+
nextIdx++;
|
|
26
|
+
}
|
|
27
|
+
return filePath ? { filePath, movePath, nextIdx } : null;
|
|
28
|
+
}
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
function parseAddFileContent(lines, startIdx) {
|
|
32
|
+
let content = "";
|
|
33
|
+
let i = startIdx;
|
|
34
|
+
while (i < lines.length && !lines[i].startsWith("***")) {
|
|
35
|
+
if (lines[i].startsWith("+")) {
|
|
36
|
+
content += `${lines[i].substring(1)}\n`;
|
|
37
|
+
}
|
|
38
|
+
i++;
|
|
39
|
+
}
|
|
40
|
+
if (content.endsWith("\n")) {
|
|
41
|
+
content = content.slice(0, -1);
|
|
42
|
+
}
|
|
43
|
+
return { content, nextIdx: i };
|
|
44
|
+
}
|
|
45
|
+
function parseUpdateFileChunks(lines, startIdx) {
|
|
46
|
+
const chunks = [];
|
|
47
|
+
let i = startIdx;
|
|
48
|
+
while (i < lines.length && !lines[i].startsWith("***")) {
|
|
49
|
+
if (lines[i].startsWith("@@")) {
|
|
50
|
+
const contextLine = lines[i].substring(2).trim();
|
|
51
|
+
i++;
|
|
52
|
+
const oldLines = [];
|
|
53
|
+
const newLines = [];
|
|
54
|
+
let isEndOfFile = false;
|
|
55
|
+
while (i < lines.length && !lines[i].startsWith("@@") && !lines[i].startsWith("***")) {
|
|
56
|
+
const changeLine = lines[i];
|
|
57
|
+
if (changeLine === "*** End of File") {
|
|
58
|
+
isEndOfFile = true;
|
|
59
|
+
i++;
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
if (changeLine.startsWith(" ")) {
|
|
63
|
+
const content = changeLine.substring(1);
|
|
64
|
+
oldLines.push(content);
|
|
65
|
+
newLines.push(content);
|
|
66
|
+
}
|
|
67
|
+
else if (changeLine.startsWith("-")) {
|
|
68
|
+
oldLines.push(changeLine.substring(1));
|
|
69
|
+
}
|
|
70
|
+
else if (changeLine.startsWith("+")) {
|
|
71
|
+
newLines.push(changeLine.substring(1));
|
|
72
|
+
}
|
|
73
|
+
i++;
|
|
74
|
+
}
|
|
75
|
+
chunks.push({
|
|
76
|
+
old_lines: oldLines,
|
|
77
|
+
new_lines: newLines,
|
|
78
|
+
change_context: contextLine || undefined,
|
|
79
|
+
is_end_of_file: isEndOfFile || undefined,
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
i++;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return { chunks, nextIdx: i };
|
|
87
|
+
}
|
|
88
|
+
export function parsePatch(patchText) {
|
|
89
|
+
const cleaned = stripHeredoc(patchText.trim());
|
|
90
|
+
const lines = cleaned.split("\n");
|
|
91
|
+
const hunks = [];
|
|
92
|
+
const beginIdx = lines.findIndex((line) => line.trim() === "*** Begin Patch");
|
|
93
|
+
const endIdx = lines.findIndex((line) => line.trim() === "*** End Patch");
|
|
94
|
+
if (beginIdx === -1 || endIdx === -1 || beginIdx >= endIdx) {
|
|
95
|
+
throw new Error("Invalid patch format: missing *** Begin Patch / *** End Patch markers");
|
|
96
|
+
}
|
|
97
|
+
let i = beginIdx + 1;
|
|
98
|
+
while (i < endIdx) {
|
|
99
|
+
const header = parsePatchHeader(lines, i);
|
|
100
|
+
if (!header) {
|
|
101
|
+
i++;
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
if (lines[i].startsWith("*** Add File:")) {
|
|
105
|
+
const { content, nextIdx } = parseAddFileContent(lines, header.nextIdx);
|
|
106
|
+
hunks.push({ type: "add", path: header.filePath, contents: content });
|
|
107
|
+
i = nextIdx;
|
|
108
|
+
}
|
|
109
|
+
else if (lines[i].startsWith("*** Delete File:")) {
|
|
110
|
+
hunks.push({ type: "delete", path: header.filePath });
|
|
111
|
+
i = header.nextIdx;
|
|
112
|
+
}
|
|
113
|
+
else if (lines[i].startsWith("*** Update File:")) {
|
|
114
|
+
const { chunks, nextIdx } = parseUpdateFileChunks(lines, header.nextIdx);
|
|
115
|
+
hunks.push({
|
|
116
|
+
type: "update",
|
|
117
|
+
path: header.filePath,
|
|
118
|
+
move_path: header.movePath,
|
|
119
|
+
chunks,
|
|
120
|
+
});
|
|
121
|
+
i = nextIdx;
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
i++;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return hunks;
|
|
128
|
+
}
|
|
129
|
+
// ---------------------------------------------------------------------------
|
|
130
|
+
// Apply update chunks to file content
|
|
131
|
+
// ---------------------------------------------------------------------------
|
|
132
|
+
function normalizeUnicode(str) {
|
|
133
|
+
return str
|
|
134
|
+
.replace(/[\u2018\u2019\u201A\u201B]/g, "'")
|
|
135
|
+
.replace(/[\u201C\u201D\u201E\u201F]/g, '"')
|
|
136
|
+
.replace(/[\u2010\u2011\u2012\u2013\u2014\u2015]/g, "-")
|
|
137
|
+
.replace(/\u2026/g, "...")
|
|
138
|
+
.replace(/\u00A0/g, " ");
|
|
139
|
+
}
|
|
140
|
+
function tryMatch(lines, pattern, startIndex, compare, eof) {
|
|
141
|
+
if (eof) {
|
|
142
|
+
const fromEnd = lines.length - pattern.length;
|
|
143
|
+
if (fromEnd >= startIndex) {
|
|
144
|
+
let matches = true;
|
|
145
|
+
for (let j = 0; j < pattern.length; j++) {
|
|
146
|
+
if (!compare(lines[fromEnd + j], pattern[j])) {
|
|
147
|
+
matches = false;
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
if (matches)
|
|
152
|
+
return fromEnd;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
for (let i = startIndex; i <= lines.length - pattern.length; i++) {
|
|
156
|
+
let matches = true;
|
|
157
|
+
for (let j = 0; j < pattern.length; j++) {
|
|
158
|
+
if (!compare(lines[i + j], pattern[j])) {
|
|
159
|
+
matches = false;
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (matches)
|
|
164
|
+
return i;
|
|
165
|
+
}
|
|
166
|
+
return -1;
|
|
167
|
+
}
|
|
168
|
+
function seekSequence(lines, pattern, startIndex, eof = false) {
|
|
169
|
+
if (pattern.length === 0)
|
|
170
|
+
return -1;
|
|
171
|
+
const exact = tryMatch(lines, pattern, startIndex, (a, b) => a === b, eof);
|
|
172
|
+
if (exact !== -1)
|
|
173
|
+
return exact;
|
|
174
|
+
const rstrip = tryMatch(lines, pattern, startIndex, (a, b) => a.trimEnd() === b.trimEnd(), eof);
|
|
175
|
+
if (rstrip !== -1)
|
|
176
|
+
return rstrip;
|
|
177
|
+
const trim = tryMatch(lines, pattern, startIndex, (a, b) => a.trim() === b.trim(), eof);
|
|
178
|
+
if (trim !== -1)
|
|
179
|
+
return trim;
|
|
180
|
+
return tryMatch(lines, pattern, startIndex, (a, b) => normalizeUnicode(a.trim()) === normalizeUnicode(b.trim()), eof);
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Apply update chunks to the original file content, producing new content.
|
|
184
|
+
* Ported from opencode's deriveNewContentsFromChunks.
|
|
185
|
+
*/
|
|
186
|
+
export function applyUpdateChunks(originalContent, filePath, chunks) {
|
|
187
|
+
const originalLines = originalContent.split("\n");
|
|
188
|
+
if (originalLines.length > 0 && originalLines[originalLines.length - 1] === "") {
|
|
189
|
+
originalLines.pop();
|
|
190
|
+
}
|
|
191
|
+
const replacements = [];
|
|
192
|
+
let lineIndex = 0;
|
|
193
|
+
for (const chunk of chunks) {
|
|
194
|
+
if (chunk.change_context) {
|
|
195
|
+
const contextIdx = seekSequence(originalLines, [chunk.change_context], lineIndex);
|
|
196
|
+
if (contextIdx === -1) {
|
|
197
|
+
throw new Error(`Failed to find context '${chunk.change_context}' in ${filePath}`);
|
|
198
|
+
}
|
|
199
|
+
lineIndex = contextIdx + 1;
|
|
200
|
+
}
|
|
201
|
+
if (chunk.old_lines.length === 0) {
|
|
202
|
+
const insertionIdx = originalLines.length > 0 && originalLines[originalLines.length - 1] === ""
|
|
203
|
+
? originalLines.length - 1
|
|
204
|
+
: originalLines.length;
|
|
205
|
+
replacements.push([insertionIdx, 0, chunk.new_lines]);
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
208
|
+
let pattern = chunk.old_lines;
|
|
209
|
+
let newSlice = chunk.new_lines;
|
|
210
|
+
let found = seekSequence(originalLines, pattern, lineIndex, chunk.is_end_of_file);
|
|
211
|
+
if (found === -1 && pattern.length > 0 && pattern[pattern.length - 1] === "") {
|
|
212
|
+
pattern = pattern.slice(0, -1);
|
|
213
|
+
if (newSlice.length > 0 && newSlice[newSlice.length - 1] === "") {
|
|
214
|
+
newSlice = newSlice.slice(0, -1);
|
|
215
|
+
}
|
|
216
|
+
found = seekSequence(originalLines, pattern, lineIndex, chunk.is_end_of_file);
|
|
217
|
+
}
|
|
218
|
+
if (found !== -1) {
|
|
219
|
+
replacements.push([found, pattern.length, newSlice]);
|
|
220
|
+
lineIndex = found + pattern.length;
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
throw new Error(`Failed to find expected lines in ${filePath}:\n${chunk.old_lines.join("\n")}`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
replacements.sort((a, b) => a[0] - b[0]);
|
|
227
|
+
const result = [...originalLines];
|
|
228
|
+
for (let i = replacements.length - 1; i >= 0; i--) {
|
|
229
|
+
const [startIdx, oldLen, newSegment] = replacements[i];
|
|
230
|
+
result.splice(startIdx, oldLen, ...newSegment);
|
|
231
|
+
}
|
|
232
|
+
if (result.length === 0 || result[result.length - 1] !== "") {
|
|
233
|
+
result.push("");
|
|
234
|
+
}
|
|
235
|
+
return result.join("\n");
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=patch-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patch-parser.js","sourceRoot":"","sources":["../src/patch-parser.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/ast.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/tools/ast.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/tools/ast.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA4DjD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAgK3E"}
|