@inkeep/agents-cli 0.60.0 → 0.62.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 (28) hide show
  1. package/dist/agents-cli/package.js +1 -1
  2. package/dist/api.js +74 -2
  3. package/dist/api.js.map +1 -1
  4. package/dist/commands/pull-v4/generators/agent-generator.js +2 -2
  5. package/dist/commands/pull-v4/generators/agent-generator.js.map +1 -1
  6. package/dist/commands/pull-v4/generators/context-config-generator.js.map +1 -1
  7. package/dist/commands/pull-v4/introspect/index.js +70 -17
  8. package/dist/commands/pull-v4/introspect/index.js.map +1 -1
  9. package/dist/commands/pull-v4/merge-conflicts.js +37 -0
  10. package/dist/commands/pull-v4/merge-conflicts.js.map +1 -0
  11. package/dist/commands/pull-v4/merge-ui/column-row.js +63 -0
  12. package/dist/commands/pull-v4/merge-ui/column-row.js.map +1 -0
  13. package/dist/commands/pull-v4/merge-ui/conflict-view.js +135 -0
  14. package/dist/commands/pull-v4/merge-ui/conflict-view.js.map +1 -0
  15. package/dist/commands/pull-v4/merge-ui/help-bar.js +79 -0
  16. package/dist/commands/pull-v4/merge-ui/help-bar.js.map +1 -0
  17. package/dist/commands/pull-v4/merge-ui/merge-app.js +239 -0
  18. package/dist/commands/pull-v4/merge-ui/merge-app.js.map +1 -0
  19. package/dist/commands/pull-v4/merge-ui/resolution-summary.js +106 -0
  20. package/dist/commands/pull-v4/merge-ui/resolution-summary.js.map +1 -0
  21. package/dist/commands/pull-v4/merge-ui/types.js +1 -0
  22. package/dist/commands/pull-v4/merge-ui/utils.js +43 -0
  23. package/dist/commands/pull-v4/merge-ui/utils.js.map +1 -0
  24. package/dist/index.js +2 -2
  25. package/dist/index.js.map +1 -1
  26. package/dist/utils/state.js +46 -0
  27. package/dist/utils/state.js.map +1 -0
  28. package/package.json +7 -4
@@ -0,0 +1,46 @@
1
+ import { join } from "node:path";
2
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
+ import { homedir } from "node:os";
4
+
5
+ //#region src/utils/state.ts
6
+ const STATE_FILE = "state.json";
7
+ function getDefaultStateDir() {
8
+ return join(homedir(), ".inkeep");
9
+ }
10
+ function getStatePath(stateDir) {
11
+ return join(stateDir, STATE_FILE);
12
+ }
13
+ function readProjectState(projectId, options) {
14
+ const statePath = getStatePath(options?.stateDir ?? getDefaultStateDir());
15
+ if (!existsSync(statePath)) return;
16
+ try {
17
+ const content = readFileSync(statePath, "utf-8");
18
+ return JSON.parse(content).projects?.[projectId];
19
+ } catch (error) {
20
+ if (error?.code === "ENOENT") return;
21
+ console.warn(`Warning: Could not read state file: ${error.message}`);
22
+ return;
23
+ }
24
+ }
25
+ function writeProjectState(projectId, hash, options) {
26
+ const stateDir = options?.stateDir ?? getDefaultStateDir();
27
+ const statePath = getStatePath(stateDir);
28
+ let state = { projects: {} };
29
+ if (existsSync(statePath)) try {
30
+ const content = readFileSync(statePath, "utf-8");
31
+ state = JSON.parse(content);
32
+ state.projects ||= {};
33
+ } catch {
34
+ state = { projects: {} };
35
+ }
36
+ if (!existsSync(stateDir)) mkdirSync(stateDir, { recursive: true });
37
+ state.projects[projectId] = {
38
+ lastPulledHash: hash,
39
+ lastPulledAt: (/* @__PURE__ */ new Date()).toISOString()
40
+ };
41
+ writeFileSync(statePath, JSON.stringify(state, null, 2) + "\n", "utf-8");
42
+ }
43
+
44
+ //#endregion
45
+ export { readProjectState, writeProjectState };
46
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","names":[],"sources":["../../src/utils/state.ts"],"sourcesContent":["import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\n\ninterface ProjectState {\n lastPulledHash: string;\n lastPulledAt: string;\n}\n\ninterface StateFile {\n projects: Record<string, ProjectState>;\n}\n\nconst STATE_FILE = 'state.json';\n\nfunction getDefaultStateDir(): string {\n return join(homedir(), '.inkeep');\n}\n\nfunction getStatePath(stateDir: string): string {\n return join(stateDir, STATE_FILE);\n}\n\nexport interface StateOptions {\n stateDir?: string;\n}\n\nexport function readProjectState(\n projectId: string,\n options?: StateOptions\n): ProjectState | undefined {\n const stateDir = options?.stateDir ?? getDefaultStateDir();\n const statePath = getStatePath(stateDir);\n if (!existsSync(statePath)) {\n return undefined;\n }\n\n try {\n const content = readFileSync(statePath, 'utf-8');\n const state: StateFile = JSON.parse(content);\n return state.projects?.[projectId];\n } catch (error: any) {\n if (error?.code === 'ENOENT') {\n return undefined;\n }\n console.warn(`Warning: Could not read state file: ${error.message}`);\n return undefined;\n }\n}\n\nexport function writeProjectState(projectId: string, hash: string, options?: StateOptions): void {\n const stateDir = options?.stateDir ?? getDefaultStateDir();\n const statePath = getStatePath(stateDir);\n\n let state: StateFile = { projects: {} };\n\n if (existsSync(statePath)) {\n try {\n const content = readFileSync(statePath, 'utf-8');\n state = JSON.parse(content);\n state.projects ||= {};\n } catch {\n state = { projects: {} };\n }\n }\n\n if (!existsSync(stateDir)) {\n mkdirSync(stateDir, { recursive: true });\n }\n\n state.projects[projectId] = {\n lastPulledHash: hash,\n lastPulledAt: new Date().toISOString(),\n };\n\n writeFileSync(statePath, JSON.stringify(state, null, 2) + '\\n', 'utf-8');\n}\n"],"mappings":";;;;;AAaA,MAAM,aAAa;AAEnB,SAAS,qBAA6B;AACpC,QAAO,KAAK,SAAS,EAAE,UAAU;;AAGnC,SAAS,aAAa,UAA0B;AAC9C,QAAO,KAAK,UAAU,WAAW;;AAOnC,SAAgB,iBACd,WACA,SAC0B;CAE1B,MAAM,YAAY,aADD,SAAS,YAAY,oBAAoB,CAClB;AACxC,KAAI,CAAC,WAAW,UAAU,CACxB;AAGF,KAAI;EACF,MAAM,UAAU,aAAa,WAAW,QAAQ;AAEhD,SADyB,KAAK,MAAM,QAAQ,CAC/B,WAAW;UACjB,OAAY;AACnB,MAAI,OAAO,SAAS,SAClB;AAEF,UAAQ,KAAK,uCAAuC,MAAM,UAAU;AACpE;;;AAIJ,SAAgB,kBAAkB,WAAmB,MAAc,SAA8B;CAC/F,MAAM,WAAW,SAAS,YAAY,oBAAoB;CAC1D,MAAM,YAAY,aAAa,SAAS;CAExC,IAAI,QAAmB,EAAE,UAAU,EAAE,EAAE;AAEvC,KAAI,WAAW,UAAU,CACvB,KAAI;EACF,MAAM,UAAU,aAAa,WAAW,QAAQ;AAChD,UAAQ,KAAK,MAAM,QAAQ;AAC3B,QAAM,aAAa,EAAE;SACf;AACN,UAAQ,EAAE,UAAU,EAAE,EAAE;;AAI5B,KAAI,CAAC,WAAW,SAAS,CACvB,WAAU,UAAU,EAAE,WAAW,MAAM,CAAC;AAG1C,OAAM,SAAS,aAAa;EAC1B,gBAAgB;EAChB,+BAAc,IAAI,MAAM,EAAC,aAAa;EACvC;AAED,eAAc,WAAW,KAAK,UAAU,OAAO,MAAM,EAAE,GAAG,MAAM,QAAQ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inkeep/agents-cli",
3
- "version": "0.60.0",
3
+ "version": "0.62.0",
4
4
  "description": "Inkeep CLI tool",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -30,22 +30,25 @@
30
30
  "dotenv": "^17.2.1",
31
31
  "find-up": "^7.0.0",
32
32
  "fs-extra": "^11.2.0",
33
+ "ink": "^6.8.0",
33
34
  "json-schema-to-zod": "^2.6.1",
34
35
  "langfuse-vercel": "^3.38.6",
35
36
  "open": "^10.2.0",
37
+ "react": "^19.2.4",
36
38
  "ts-morph": "^26.0.0",
37
39
  "tsx": "^4.20.5",
38
40
  "yaml": "^2.7.0",
39
41
  "zod": "^4.3.6",
40
- "@inkeep/agents-core": "^0.60.0",
41
- "@inkeep/agents-sdk": "^0.60.0"
42
+ "@inkeep/agents-core": "^0.62.0",
43
+ "@inkeep/agents-sdk": "^0.62.0"
42
44
  },
43
45
  "devDependencies": {
44
- "diff": "^8.0.3",
45
46
  "@types/degit": "^2.8.6",
46
47
  "@types/fs-extra": "^11.0.4",
47
48
  "@types/node": "^22",
49
+ "@types/react": "^19",
48
50
  "@vitest/coverage-v8": "^3.2.4",
51
+ "diff": "^8.0.3",
49
52
  "typescript": "^6.0.2",
50
53
  "vitest": "^3.2.4"
51
54
  },