@ordewell/core 0.4.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.
Files changed (41) hide show
  1. package/LICENSE +211 -0
  2. package/README.md +37 -0
  3. package/dist/ITerminalRunner-Bbpe8uts.d.ts +535 -0
  4. package/dist/ITerminalRunner-D8Bf-HD4.d.mts +535 -0
  5. package/dist/Task-1NwmUImI.d.mts +264 -0
  6. package/dist/Task-1NwmUImI.d.ts +264 -0
  7. package/dist/chunk-4KIWPW4K.mjs +510 -0
  8. package/dist/chunk-4KIWPW4K.mjs.map +1 -0
  9. package/dist/chunk-SRGQBGI5.mjs +463 -0
  10. package/dist/chunk-SRGQBGI5.mjs.map +1 -0
  11. package/dist/chunk-YXAIQKVE.mjs +398 -0
  12. package/dist/chunk-YXAIQKVE.mjs.map +1 -0
  13. package/dist/index.d.mts +2990 -0
  14. package/dist/index.d.ts +2990 -0
  15. package/dist/index.js +12927 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/index.mjs +11449 -0
  18. package/dist/index.mjs.map +1 -0
  19. package/dist/parsing-RjN9JbyG.d.ts +161 -0
  20. package/dist/parsing-xpozY5ac.d.mts +161 -0
  21. package/dist/parsing.d.mts +2 -0
  22. package/dist/parsing.d.ts +2 -0
  23. package/dist/parsing.js +432 -0
  24. package/dist/parsing.js.map +1 -0
  25. package/dist/parsing.mjs +15 -0
  26. package/dist/parsing.mjs.map +1 -0
  27. package/dist/plan-utils-Cgc0cCH1.d.ts +111 -0
  28. package/dist/plan-utils-nfHKSbd3.d.mts +111 -0
  29. package/dist/plan-utils.d.mts +2 -0
  30. package/dist/plan-utils.d.ts +2 -0
  31. package/dist/plan-utils.js +181 -0
  32. package/dist/plan-utils.js.map +1 -0
  33. package/dist/plan-utils.mjs +18 -0
  34. package/dist/plan-utils.mjs.map +1 -0
  35. package/dist/testing.d.mts +28 -0
  36. package/dist/testing.d.ts +28 -0
  37. package/dist/testing.js +113 -0
  38. package/dist/testing.js.map +1 -0
  39. package/dist/testing.mjs +86 -0
  40. package/dist/testing.mjs.map +1 -0
  41. package/package.json +92 -0
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/testing.ts
21
+ var testing_exports = {};
22
+ __export(testing_exports, {
23
+ FakeTerminalSession: () => FakeTerminalSession,
24
+ fakeConfig: () => fakeConfig,
25
+ fakeFileSystem: () => fakeFileSystem
26
+ });
27
+ module.exports = __toCommonJS(testing_exports);
28
+ function fakeConfig(overrides = {}) {
29
+ return {
30
+ aiProvider: "openrouter",
31
+ apiKey: "sk-test",
32
+ planningModel: "test-model",
33
+ enabledRunners: ["claude-code"],
34
+ maxParallelSessions: 3,
35
+ researchEnabled: false,
36
+ researchMaxSteps: 10,
37
+ researchMaxFileSize: 1e5,
38
+ openAiBaseUrl: "https://api.openai.com/v1",
39
+ openAiApiKey: "",
40
+ openrouterKey: "",
41
+ geminiKey: "",
42
+ openaiCompatibleBaseUrl: "",
43
+ openaiCompatibleApiKey: "",
44
+ orchestratorModel: "",
45
+ researchSubagentModel: "",
46
+ geminiModel: "",
47
+ planMapEnabled: true,
48
+ autonomousMode: true,
49
+ approvalMode: "ask",
50
+ approvalPreApproved: [],
51
+ setProviderModelLists: () => {
52
+ },
53
+ getProviderBaseUrl: () => "",
54
+ getProviderApiKey: () => "",
55
+ ...overrides
56
+ };
57
+ }
58
+ var EMPTY_OUTCOME = { success: false, output: "", truncated: false };
59
+ function fakeFileSystem(overrides = {}) {
60
+ return {
61
+ readFile: async () => EMPTY_OUTCOME,
62
+ readFiles: async () => EMPTY_OUTCOME,
63
+ glob: async () => EMPTY_OUTCOME,
64
+ grep: async () => EMPTY_OUTCOME,
65
+ findSymbol: async () => EMPTY_OUTCOME,
66
+ listDir: async () => EMPTY_OUTCOME,
67
+ bash: async () => EMPTY_OUTCOME,
68
+ getWorkspaceRoot: () => "/workspace",
69
+ ...overrides
70
+ };
71
+ }
72
+ var FakeTerminalSession = class {
73
+ constructor(id = "s1", taskId = "t1") {
74
+ this.id = id;
75
+ this.taskId = taskId;
76
+ }
77
+ id;
78
+ taskId;
79
+ outputCbs = [];
80
+ exitCbs = [];
81
+ output = "";
82
+ written = [];
83
+ killed = false;
84
+ onOutput(cb) {
85
+ this.outputCbs.push(cb);
86
+ }
87
+ onExit(cb) {
88
+ this.exitCbs.push(cb);
89
+ }
90
+ kill() {
91
+ this.killed = true;
92
+ }
93
+ getOutput() {
94
+ return this.output;
95
+ }
96
+ write(text) {
97
+ this.written.push(text);
98
+ }
99
+ emitOutput(text) {
100
+ this.output += text;
101
+ for (const cb of this.outputCbs) cb(text);
102
+ }
103
+ emitExit(code) {
104
+ for (const cb of this.exitCbs) cb(code);
105
+ }
106
+ };
107
+ // Annotate the CommonJS export names for ESM import in node:
108
+ 0 && (module.exports = {
109
+ FakeTerminalSession,
110
+ fakeConfig,
111
+ fakeFileSystem
112
+ });
113
+ //# sourceMappingURL=testing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/testing.ts"],"sourcesContent":["import type { IConfig } from './interfaces/IConfig';\nimport type { IFileSystem, ToolOutcome } from './interfaces/IFileSystem';\nimport type { ITerminalSession } from './interfaces/ITerminalRunner';\n\nexport function fakeConfig(overrides: Partial<IConfig> = {}): IConfig {\n return {\n aiProvider: 'openrouter',\n apiKey: 'sk-test',\n planningModel: 'test-model',\n enabledRunners: ['claude-code'],\n maxParallelSessions: 3,\n researchEnabled: false,\n researchMaxSteps: 10,\n researchMaxFileSize: 100_000,\n openAiBaseUrl: 'https://api.openai.com/v1',\n openAiApiKey: '',\n openrouterKey: '',\n geminiKey: '',\n openaiCompatibleBaseUrl: '',\n openaiCompatibleApiKey: '',\n orchestratorModel: '',\n researchSubagentModel: '',\n geminiModel: '',\n planMapEnabled: true,\n autonomousMode: true,\n approvalMode: 'ask',\n approvalPreApproved: [],\n setProviderModelLists: () => {},\n getProviderBaseUrl: () => '',\n getProviderApiKey: () => '',\n ...overrides,\n };\n}\n\nconst EMPTY_OUTCOME: ToolOutcome = { success: false, output: '', truncated: false };\n\n/**\n * A complete {@link IFileSystem} stub. Lives here rather than in each package's\n * test folder so adding a tool to the interface is one edit, not one per suite.\n */\nexport function fakeFileSystem(overrides: Partial<IFileSystem> = {}): IFileSystem {\n return {\n readFile: async () => EMPTY_OUTCOME,\n readFiles: async () => EMPTY_OUTCOME,\n glob: async () => EMPTY_OUTCOME,\n grep: async () => EMPTY_OUTCOME,\n findSymbol: async () => EMPTY_OUTCOME,\n listDir: async () => EMPTY_OUTCOME,\n bash: async () => EMPTY_OUTCOME,\n getWorkspaceRoot: () => '/workspace',\n ...overrides,\n };\n}\n\nexport class FakeTerminalSession implements ITerminalSession {\n private outputCbs: Array<(text: string) => void> = [];\n private exitCbs: Array<(code: number) => void> = [];\n output = '';\n written: string[] = [];\n killed = false;\n\n constructor(public id = 's1', public taskId = 't1') {}\n\n onOutput(cb: (text: string) => void): void { this.outputCbs.push(cb); }\n onExit(cb: (code: number) => void): void { this.exitCbs.push(cb); }\n kill(): void { this.killed = true; }\n getOutput(): string { return this.output; }\n write(text: string): void { this.written.push(text); }\n\n emitOutput(text: string): void {\n this.output += text;\n for (const cb of this.outputCbs) cb(text);\n }\n emitExit(code: number): void {\n for (const cb of this.exitCbs) cb(code);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIO,SAAS,WAAW,YAA8B,CAAC,GAAY;AACpE,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,gBAAgB,CAAC,aAAa;AAAA,IAC9B,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,qBAAqB;AAAA,IACrB,eAAe;AAAA,IACf,cAAc;AAAA,IACd,eAAe;AAAA,IACf,WAAW;AAAA,IACX,yBAAyB;AAAA,IACzB,wBAAwB;AAAA,IACxB,mBAAmB;AAAA,IACnB,uBAAuB;AAAA,IACvB,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,qBAAqB,CAAC;AAAA,IACtB,uBAAuB,MAAM;AAAA,IAAC;AAAA,IAC9B,oBAAoB,MAAM;AAAA,IAC1B,mBAAmB,MAAM;AAAA,IACzB,GAAG;AAAA,EACL;AACF;AAEA,IAAM,gBAA6B,EAAE,SAAS,OAAO,QAAQ,IAAI,WAAW,MAAM;AAM3E,SAAS,eAAe,YAAkC,CAAC,GAAgB;AAChF,SAAO;AAAA,IACL,UAAU,YAAY;AAAA,IACtB,WAAW,YAAY;AAAA,IACvB,MAAM,YAAY;AAAA,IAClB,MAAM,YAAY;AAAA,IAClB,YAAY,YAAY;AAAA,IACxB,SAAS,YAAY;AAAA,IACrB,MAAM,YAAY;AAAA,IAClB,kBAAkB,MAAM;AAAA,IACxB,GAAG;AAAA,EACL;AACF;AAEO,IAAM,sBAAN,MAAsD;AAAA,EAO3D,YAAmB,KAAK,MAAa,SAAS,MAAM;AAAjC;AAAkB;AAAA,EAAgB;AAAA,EAAlC;AAAA,EAAkB;AAAA,EAN7B,YAA2C,CAAC;AAAA,EAC5C,UAAyC,CAAC;AAAA,EAClD,SAAS;AAAA,EACT,UAAoB,CAAC;AAAA,EACrB,SAAS;AAAA,EAIT,SAAS,IAAkC;AAAE,SAAK,UAAU,KAAK,EAAE;AAAA,EAAG;AAAA,EACtE,OAAO,IAAkC;AAAE,SAAK,QAAQ,KAAK,EAAE;AAAA,EAAG;AAAA,EAClE,OAAa;AAAE,SAAK,SAAS;AAAA,EAAM;AAAA,EACnC,YAAoB;AAAE,WAAO,KAAK;AAAA,EAAQ;AAAA,EAC1C,MAAM,MAAoB;AAAE,SAAK,QAAQ,KAAK,IAAI;AAAA,EAAG;AAAA,EAErD,WAAW,MAAoB;AAC7B,SAAK,UAAU;AACf,eAAW,MAAM,KAAK,UAAW,IAAG,IAAI;AAAA,EAC1C;AAAA,EACA,SAAS,MAAoB;AAC3B,eAAW,MAAM,KAAK,QAAS,IAAG,IAAI;AAAA,EACxC;AACF;","names":[]}
@@ -0,0 +1,86 @@
1
+ // src/testing.ts
2
+ function fakeConfig(overrides = {}) {
3
+ return {
4
+ aiProvider: "openrouter",
5
+ apiKey: "sk-test",
6
+ planningModel: "test-model",
7
+ enabledRunners: ["claude-code"],
8
+ maxParallelSessions: 3,
9
+ researchEnabled: false,
10
+ researchMaxSteps: 10,
11
+ researchMaxFileSize: 1e5,
12
+ openAiBaseUrl: "https://api.openai.com/v1",
13
+ openAiApiKey: "",
14
+ openrouterKey: "",
15
+ geminiKey: "",
16
+ openaiCompatibleBaseUrl: "",
17
+ openaiCompatibleApiKey: "",
18
+ orchestratorModel: "",
19
+ researchSubagentModel: "",
20
+ geminiModel: "",
21
+ planMapEnabled: true,
22
+ autonomousMode: true,
23
+ approvalMode: "ask",
24
+ approvalPreApproved: [],
25
+ setProviderModelLists: () => {
26
+ },
27
+ getProviderBaseUrl: () => "",
28
+ getProviderApiKey: () => "",
29
+ ...overrides
30
+ };
31
+ }
32
+ var EMPTY_OUTCOME = { success: false, output: "", truncated: false };
33
+ function fakeFileSystem(overrides = {}) {
34
+ return {
35
+ readFile: async () => EMPTY_OUTCOME,
36
+ readFiles: async () => EMPTY_OUTCOME,
37
+ glob: async () => EMPTY_OUTCOME,
38
+ grep: async () => EMPTY_OUTCOME,
39
+ findSymbol: async () => EMPTY_OUTCOME,
40
+ listDir: async () => EMPTY_OUTCOME,
41
+ bash: async () => EMPTY_OUTCOME,
42
+ getWorkspaceRoot: () => "/workspace",
43
+ ...overrides
44
+ };
45
+ }
46
+ var FakeTerminalSession = class {
47
+ constructor(id = "s1", taskId = "t1") {
48
+ this.id = id;
49
+ this.taskId = taskId;
50
+ }
51
+ id;
52
+ taskId;
53
+ outputCbs = [];
54
+ exitCbs = [];
55
+ output = "";
56
+ written = [];
57
+ killed = false;
58
+ onOutput(cb) {
59
+ this.outputCbs.push(cb);
60
+ }
61
+ onExit(cb) {
62
+ this.exitCbs.push(cb);
63
+ }
64
+ kill() {
65
+ this.killed = true;
66
+ }
67
+ getOutput() {
68
+ return this.output;
69
+ }
70
+ write(text) {
71
+ this.written.push(text);
72
+ }
73
+ emitOutput(text) {
74
+ this.output += text;
75
+ for (const cb of this.outputCbs) cb(text);
76
+ }
77
+ emitExit(code) {
78
+ for (const cb of this.exitCbs) cb(code);
79
+ }
80
+ };
81
+ export {
82
+ FakeTerminalSession,
83
+ fakeConfig,
84
+ fakeFileSystem
85
+ };
86
+ //# sourceMappingURL=testing.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/testing.ts"],"sourcesContent":["import type { IConfig } from './interfaces/IConfig';\nimport type { IFileSystem, ToolOutcome } from './interfaces/IFileSystem';\nimport type { ITerminalSession } from './interfaces/ITerminalRunner';\n\nexport function fakeConfig(overrides: Partial<IConfig> = {}): IConfig {\n return {\n aiProvider: 'openrouter',\n apiKey: 'sk-test',\n planningModel: 'test-model',\n enabledRunners: ['claude-code'],\n maxParallelSessions: 3,\n researchEnabled: false,\n researchMaxSteps: 10,\n researchMaxFileSize: 100_000,\n openAiBaseUrl: 'https://api.openai.com/v1',\n openAiApiKey: '',\n openrouterKey: '',\n geminiKey: '',\n openaiCompatibleBaseUrl: '',\n openaiCompatibleApiKey: '',\n orchestratorModel: '',\n researchSubagentModel: '',\n geminiModel: '',\n planMapEnabled: true,\n autonomousMode: true,\n approvalMode: 'ask',\n approvalPreApproved: [],\n setProviderModelLists: () => {},\n getProviderBaseUrl: () => '',\n getProviderApiKey: () => '',\n ...overrides,\n };\n}\n\nconst EMPTY_OUTCOME: ToolOutcome = { success: false, output: '', truncated: false };\n\n/**\n * A complete {@link IFileSystem} stub. Lives here rather than in each package's\n * test folder so adding a tool to the interface is one edit, not one per suite.\n */\nexport function fakeFileSystem(overrides: Partial<IFileSystem> = {}): IFileSystem {\n return {\n readFile: async () => EMPTY_OUTCOME,\n readFiles: async () => EMPTY_OUTCOME,\n glob: async () => EMPTY_OUTCOME,\n grep: async () => EMPTY_OUTCOME,\n findSymbol: async () => EMPTY_OUTCOME,\n listDir: async () => EMPTY_OUTCOME,\n bash: async () => EMPTY_OUTCOME,\n getWorkspaceRoot: () => '/workspace',\n ...overrides,\n };\n}\n\nexport class FakeTerminalSession implements ITerminalSession {\n private outputCbs: Array<(text: string) => void> = [];\n private exitCbs: Array<(code: number) => void> = [];\n output = '';\n written: string[] = [];\n killed = false;\n\n constructor(public id = 's1', public taskId = 't1') {}\n\n onOutput(cb: (text: string) => void): void { this.outputCbs.push(cb); }\n onExit(cb: (code: number) => void): void { this.exitCbs.push(cb); }\n kill(): void { this.killed = true; }\n getOutput(): string { return this.output; }\n write(text: string): void { this.written.push(text); }\n\n emitOutput(text: string): void {\n this.output += text;\n for (const cb of this.outputCbs) cb(text);\n }\n emitExit(code: number): void {\n for (const cb of this.exitCbs) cb(code);\n }\n}\n"],"mappings":";AAIO,SAAS,WAAW,YAA8B,CAAC,GAAY;AACpE,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,gBAAgB,CAAC,aAAa;AAAA,IAC9B,qBAAqB;AAAA,IACrB,iBAAiB;AAAA,IACjB,kBAAkB;AAAA,IAClB,qBAAqB;AAAA,IACrB,eAAe;AAAA,IACf,cAAc;AAAA,IACd,eAAe;AAAA,IACf,WAAW;AAAA,IACX,yBAAyB;AAAA,IACzB,wBAAwB;AAAA,IACxB,mBAAmB;AAAA,IACnB,uBAAuB;AAAA,IACvB,aAAa;AAAA,IACb,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,qBAAqB,CAAC;AAAA,IACtB,uBAAuB,MAAM;AAAA,IAAC;AAAA,IAC9B,oBAAoB,MAAM;AAAA,IAC1B,mBAAmB,MAAM;AAAA,IACzB,GAAG;AAAA,EACL;AACF;AAEA,IAAM,gBAA6B,EAAE,SAAS,OAAO,QAAQ,IAAI,WAAW,MAAM;AAM3E,SAAS,eAAe,YAAkC,CAAC,GAAgB;AAChF,SAAO;AAAA,IACL,UAAU,YAAY;AAAA,IACtB,WAAW,YAAY;AAAA,IACvB,MAAM,YAAY;AAAA,IAClB,MAAM,YAAY;AAAA,IAClB,YAAY,YAAY;AAAA,IACxB,SAAS,YAAY;AAAA,IACrB,MAAM,YAAY;AAAA,IAClB,kBAAkB,MAAM;AAAA,IACxB,GAAG;AAAA,EACL;AACF;AAEO,IAAM,sBAAN,MAAsD;AAAA,EAO3D,YAAmB,KAAK,MAAa,SAAS,MAAM;AAAjC;AAAkB;AAAA,EAAgB;AAAA,EAAlC;AAAA,EAAkB;AAAA,EAN7B,YAA2C,CAAC;AAAA,EAC5C,UAAyC,CAAC;AAAA,EAClD,SAAS;AAAA,EACT,UAAoB,CAAC;AAAA,EACrB,SAAS;AAAA,EAIT,SAAS,IAAkC;AAAE,SAAK,UAAU,KAAK,EAAE;AAAA,EAAG;AAAA,EACtE,OAAO,IAAkC;AAAE,SAAK,QAAQ,KAAK,EAAE;AAAA,EAAG;AAAA,EAClE,OAAa;AAAE,SAAK,SAAS;AAAA,EAAM;AAAA,EACnC,YAAoB;AAAE,WAAO,KAAK;AAAA,EAAQ;AAAA,EAC1C,MAAM,MAAoB;AAAE,SAAK,QAAQ,KAAK,IAAI;AAAA,EAAG;AAAA,EAErD,WAAW,MAAoB;AAC7B,SAAK,UAAU;AACf,eAAW,MAAM,KAAK,UAAW,IAAG,IAAI;AAAA,EAC1C;AAAA,EACA,SAAS,MAAoB;AAC3B,eAAW,MAAM,KAAK,QAAS,IAAG,IAAI;AAAA,EACxC;AACF;","names":[]}
package/package.json ADDED
@@ -0,0 +1,92 @@
1
+ {
2
+ "name": "@ordewell/core",
3
+ "version": "0.4.0",
4
+ "description": "Ordewell core — planner, orchestrator, runners and verification engine.",
5
+ "license": "Apache-2.0",
6
+ "author": "Alessandro Costanzo Ciano",
7
+ "homepage": "https://ordewell.ai",
8
+ "bugs": {
9
+ "url": "https://github.com/ordewell/ordewell/issues"
10
+ },
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/ordewell/ordewell.git",
14
+ "directory": "packages/core"
15
+ },
16
+ "keywords": [
17
+ "ai",
18
+ "agent",
19
+ "orchestration",
20
+ "coding-agent",
21
+ "planner"
22
+ ],
23
+ "engines": {
24
+ "node": ">=20"
25
+ },
26
+ "publishConfig": {
27
+ "access": "public"
28
+ },
29
+ "main": "./dist/index.js",
30
+ "module": "./dist/index.mjs",
31
+ "types": "./dist/index.d.ts",
32
+ "sideEffects": false,
33
+ "exports": {
34
+ ".": {
35
+ "types": "./dist/index.d.ts",
36
+ "import": "./dist/index.mjs",
37
+ "require": "./dist/index.js"
38
+ },
39
+ "./parsing": {
40
+ "types": "./dist/parsing.d.ts",
41
+ "import": "./dist/parsing.mjs",
42
+ "require": "./dist/parsing.js"
43
+ },
44
+ "./plan-utils": {
45
+ "types": "./dist/plan-utils.d.ts",
46
+ "import": "./dist/plan-utils.mjs",
47
+ "require": "./dist/plan-utils.js"
48
+ },
49
+ "./testing": {
50
+ "types": "./dist/testing.d.ts",
51
+ "import": "./dist/testing.mjs",
52
+ "require": "./dist/testing.js"
53
+ }
54
+ },
55
+ "typesVersions": {
56
+ "*": {
57
+ "parsing": [
58
+ "./dist/parsing.d.ts"
59
+ ],
60
+ "plan-utils": [
61
+ "./dist/plan-utils.d.ts"
62
+ ],
63
+ "testing": [
64
+ "./dist/testing.d.ts"
65
+ ]
66
+ }
67
+ },
68
+ "files": [
69
+ "dist",
70
+ "README.md",
71
+ "LICENSE"
72
+ ],
73
+ "scripts": {
74
+ "build": "tsup src/index.ts src/parsing.ts src/testing.ts src/plan-utils.ts --dts --sourcemap --format cjs,esm --clean --tsconfig tsconfig.json",
75
+ "prepublishOnly": "npm run build",
76
+ "watch": "tsup src/index.ts --watch --sourcemap",
77
+ "test": "vitest run",
78
+ "lint": "eslint src --ext .ts",
79
+ "typecheck": "tsc --noEmit"
80
+ },
81
+ "dependencies": {
82
+ "@google/generative-ai": "^0.21.0",
83
+ "openai": "^4.104.0",
84
+ "uuid": "^11.1.1"
85
+ },
86
+ "devDependencies": {
87
+ "@types/uuid": "^10.0.0",
88
+ "tsup": "^8.3.0",
89
+ "typescript": "^5.9.3",
90
+ "vitest": "^2.1.0"
91
+ }
92
+ }