@puukis/core 0.1.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 (162) hide show
  1. package/LICENSE +21 -0
  2. package/dist/brain/Brain.d.ts +39 -0
  3. package/dist/brain/Brain.d.ts.map +1 -0
  4. package/dist/brain/Brain.js +284 -0
  5. package/dist/brain/Brain.js.map +1 -0
  6. package/dist/brain/index.d.ts +2 -0
  7. package/dist/brain/index.d.ts.map +1 -0
  8. package/dist/brain/index.js +2 -0
  9. package/dist/brain/index.js.map +1 -0
  10. package/dist/cli/argv.d.ts +8 -0
  11. package/dist/cli/argv.d.ts.map +1 -0
  12. package/dist/cli/argv.js +41 -0
  13. package/dist/cli/argv.js.map +1 -0
  14. package/dist/cli/codexInstall.d.ts +17 -0
  15. package/dist/cli/codexInstall.d.ts.map +1 -0
  16. package/dist/cli/codexInstall.js +106 -0
  17. package/dist/cli/codexInstall.js.map +1 -0
  18. package/dist/cli/commands/auth.d.ts +3 -0
  19. package/dist/cli/commands/auth.d.ts.map +1 -0
  20. package/dist/cli/commands/auth.js +66 -0
  21. package/dist/cli/commands/auth.js.map +1 -0
  22. package/dist/cli/commands/install.d.ts +3 -0
  23. package/dist/cli/commands/install.d.ts.map +1 -0
  24. package/dist/cli/commands/install.js +21 -0
  25. package/dist/cli/commands/install.js.map +1 -0
  26. package/dist/cli/commands/onboard.d.ts +3 -0
  27. package/dist/cli/commands/onboard.d.ts.map +1 -0
  28. package/dist/cli/commands/onboard.js +43 -0
  29. package/dist/cli/commands/onboard.js.map +1 -0
  30. package/dist/cli/commands/uninstall.d.ts +3 -0
  31. package/dist/cli/commands/uninstall.d.ts.map +1 -0
  32. package/dist/cli/commands/uninstall.js +193 -0
  33. package/dist/cli/commands/uninstall.js.map +1 -0
  34. package/dist/cli/commands/update.d.ts +3 -0
  35. package/dist/cli/commands/update.d.ts.map +1 -0
  36. package/dist/cli/commands/update.js +314 -0
  37. package/dist/cli/commands/update.js.map +1 -0
  38. package/dist/cli/index.d.ts +3 -0
  39. package/dist/cli/index.d.ts.map +1 -0
  40. package/dist/cli/index.js +60 -0
  41. package/dist/cli/index.js.map +1 -0
  42. package/dist/codex/CodexRpcClient.d.ts +65 -0
  43. package/dist/codex/CodexRpcClient.d.ts.map +1 -0
  44. package/dist/codex/CodexRpcClient.js +395 -0
  45. package/dist/codex/CodexRpcClient.js.map +1 -0
  46. package/dist/codex/codexModels.d.ts +33 -0
  47. package/dist/codex/codexModels.d.ts.map +1 -0
  48. package/dist/codex/codexModels.js +226 -0
  49. package/dist/codex/codexModels.js.map +1 -0
  50. package/dist/codex/index.d.ts +5 -0
  51. package/dist/codex/index.d.ts.map +1 -0
  52. package/dist/codex/index.js +3 -0
  53. package/dist/codex/index.js.map +1 -0
  54. package/dist/codex/types.d.ts +97 -0
  55. package/dist/codex/types.d.ts.map +1 -0
  56. package/dist/codex/types.js +2 -0
  57. package/dist/codex/types.js.map +1 -0
  58. package/dist/config/env.d.ts +8 -0
  59. package/dist/config/env.d.ts.map +1 -0
  60. package/dist/config/env.js +130 -0
  61. package/dist/config/env.js.map +1 -0
  62. package/dist/config/index.d.ts +2 -0
  63. package/dist/config/index.d.ts.map +1 -0
  64. package/dist/config/index.js +2 -0
  65. package/dist/config/index.js.map +1 -0
  66. package/dist/db/index.d.ts +48 -0
  67. package/dist/db/index.d.ts.map +1 -0
  68. package/dist/db/index.js +147 -0
  69. package/dist/db/index.js.map +1 -0
  70. package/dist/gateway/Gateway.d.ts +69 -0
  71. package/dist/gateway/Gateway.d.ts.map +1 -0
  72. package/dist/gateway/Gateway.js +239 -0
  73. package/dist/gateway/Gateway.js.map +1 -0
  74. package/dist/gateway/LaneQueue.d.ts +24 -0
  75. package/dist/gateway/LaneQueue.d.ts.map +1 -0
  76. package/dist/gateway/LaneQueue.js +59 -0
  77. package/dist/gateway/LaneQueue.js.map +1 -0
  78. package/dist/gateway/index.d.ts +3 -0
  79. package/dist/gateway/index.d.ts.map +1 -0
  80. package/dist/gateway/index.js +3 -0
  81. package/dist/gateway/index.js.map +1 -0
  82. package/dist/index.d.ts +13 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +14 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/llm/GeminiProvider.d.ts +16 -0
  87. package/dist/llm/GeminiProvider.d.ts.map +1 -0
  88. package/dist/llm/GeminiProvider.js +172 -0
  89. package/dist/llm/GeminiProvider.js.map +1 -0
  90. package/dist/llm/OllamaProvider.d.ts +15 -0
  91. package/dist/llm/OllamaProvider.d.ts.map +1 -0
  92. package/dist/llm/OllamaProvider.js +108 -0
  93. package/dist/llm/OllamaProvider.js.map +1 -0
  94. package/dist/llm/OpenAICodexProvider.d.ts +51 -0
  95. package/dist/llm/OpenAICodexProvider.d.ts.map +1 -0
  96. package/dist/llm/OpenAICodexProvider.js +620 -0
  97. package/dist/llm/OpenAICodexProvider.js.map +1 -0
  98. package/dist/llm/OpenAIProvider.d.ts +16 -0
  99. package/dist/llm/OpenAIProvider.d.ts.map +1 -0
  100. package/dist/llm/OpenAIProvider.js +134 -0
  101. package/dist/llm/OpenAIProvider.js.map +1 -0
  102. package/dist/llm/index.d.ts +10 -0
  103. package/dist/llm/index.d.ts.map +1 -0
  104. package/dist/llm/index.js +30 -0
  105. package/dist/llm/index.js.map +1 -0
  106. package/dist/main.d.ts +7 -0
  107. package/dist/main.d.ts.map +1 -0
  108. package/dist/main.js +88 -0
  109. package/dist/main.js.map +1 -0
  110. package/dist/pipeline/index.d.ts +2 -0
  111. package/dist/pipeline/index.d.ts.map +1 -0
  112. package/dist/pipeline/index.js +2 -0
  113. package/dist/pipeline/index.js.map +1 -0
  114. package/dist/pipeline/normalize.d.ts +19 -0
  115. package/dist/pipeline/normalize.d.ts.map +1 -0
  116. package/dist/pipeline/normalize.js +34 -0
  117. package/dist/pipeline/normalize.js.map +1 -0
  118. package/dist/server/index.d.ts +28 -0
  119. package/dist/server/index.d.ts.map +1 -0
  120. package/dist/server/index.js +389 -0
  121. package/dist/server/index.js.map +1 -0
  122. package/dist/tools/ToolExecutor.d.ts +68 -0
  123. package/dist/tools/ToolExecutor.d.ts.map +1 -0
  124. package/dist/tools/ToolExecutor.js +177 -0
  125. package/dist/tools/ToolExecutor.js.map +1 -0
  126. package/dist/tools/builtin/browser.d.ts +27 -0
  127. package/dist/tools/builtin/browser.d.ts.map +1 -0
  128. package/dist/tools/builtin/browser.js +222 -0
  129. package/dist/tools/builtin/browser.js.map +1 -0
  130. package/dist/tools/builtin/filesystem.d.ts +22 -0
  131. package/dist/tools/builtin/filesystem.d.ts.map +1 -0
  132. package/dist/tools/builtin/filesystem.js +151 -0
  133. package/dist/tools/builtin/filesystem.js.map +1 -0
  134. package/dist/tools/builtin/index.d.ts +10 -0
  135. package/dist/tools/builtin/index.d.ts.map +1 -0
  136. package/dist/tools/builtin/index.js +21 -0
  137. package/dist/tools/builtin/index.js.map +1 -0
  138. package/dist/tools/builtin/sandbox.d.ts +11 -0
  139. package/dist/tools/builtin/sandbox.d.ts.map +1 -0
  140. package/dist/tools/builtin/sandbox.js +166 -0
  141. package/dist/tools/builtin/sandbox.js.map +1 -0
  142. package/dist/tools/builtin/search.d.ts +7 -0
  143. package/dist/tools/builtin/search.d.ts.map +1 -0
  144. package/dist/tools/builtin/search.js +76 -0
  145. package/dist/tools/builtin/search.js.map +1 -0
  146. package/dist/tools/builtin/shell.d.ts +7 -0
  147. package/dist/tools/builtin/shell.d.ts.map +1 -0
  148. package/dist/tools/builtin/shell.js +71 -0
  149. package/dist/tools/builtin/shell.js.map +1 -0
  150. package/dist/tools/index.d.ts +3 -0
  151. package/dist/tools/index.d.ts.map +1 -0
  152. package/dist/tools/index.js +3 -0
  153. package/dist/tools/index.js.map +1 -0
  154. package/dist/types.d.ts +167 -0
  155. package/dist/types.d.ts.map +1 -0
  156. package/dist/types.js +3 -0
  157. package/dist/types.js.map +1 -0
  158. package/dist/workspace/agentWorkspace.d.ts +24 -0
  159. package/dist/workspace/agentWorkspace.d.ts.map +1 -0
  160. package/dist/workspace/agentWorkspace.js +210 -0
  161. package/dist/workspace/agentWorkspace.js.map +1 -0
  162. package/package.json +45 -0
@@ -0,0 +1,3 @@
1
+ import { type ParsedArgs } from '../argv.js';
2
+ export declare function runInstallCommand(args: ParsedArgs): Promise<void>;
3
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAE5D,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBvE"}
@@ -0,0 +1,21 @@
1
+ import { ensureCodexInstalled, getCodexInstallHelp } from '../codexInstall.js';
2
+ import { getFlagString } from '../argv.js';
3
+ export async function runInstallCommand(args) {
4
+ const target = args.positional[1] ?? 'codex';
5
+ if (target !== 'codex') {
6
+ throw new Error(`Unknown install target: ${target}`);
7
+ }
8
+ const installMethod = getFlagString(args.flags, 'method', 'auto');
9
+ const result = await ensureCodexInstalled({
10
+ autoInstall: true,
11
+ preferBrewOnMac: installMethod === 'brew',
12
+ });
13
+ if (!result.installed) {
14
+ const attempts = result.attempts.length > 0
15
+ ? `Attempted:\n- ${result.attempts.join('\n- ')}`
16
+ : 'No installation commands were attempted.';
17
+ throw new Error(`${attempts}\n\n${result.error ?? getCodexInstallHelp()}`);
18
+ }
19
+ console.log(`Codex installed (${result.version ?? 'unknown version'}).`);
20
+ }
21
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAmB,MAAM,YAAY,CAAC;AAE5D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAgB;IACtD,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC;IAE7C,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAElE,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC;QACxC,WAAW,EAAE,IAAI;QACjB,eAAe,EAAE,aAAa,KAAK,MAAM;KAC1C,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YACzC,CAAC,CAAC,iBAAiB,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACjD,CAAC,CAAC,0CAA0C,CAAC;QAE/C,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,OAAO,MAAM,CAAC,KAAK,IAAI,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAC7E,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,OAAO,IAAI,iBAAiB,IAAI,CAAC,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type ParsedArgs } from '../argv.js';
2
+ export declare function runOnboardCommand(args: ParsedArgs): Promise<void>;
3
+ //# sourceMappingURL=onboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboard.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/onboard.ts"],"names":[],"mappings":"AACA,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAIrE,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CvE"}
@@ -0,0 +1,43 @@
1
+ import { ensureCodexInstalled, getCodexInstallHelp } from '../codexInstall.js';
2
+ import { getFlagString, hasFlag } from '../argv.js';
3
+ import { runAuthCommand } from './auth.js';
4
+ import { updateEnvFile } from '../../config/env.js';
5
+ export async function runOnboardCommand(args) {
6
+ const authChoice = getFlagString(args.flags, 'auth-choice', 'openai-codex');
7
+ if (authChoice !== 'openai-codex') {
8
+ throw new Error(`Unsupported --auth-choice: ${authChoice}. Supported: openai-codex`);
9
+ }
10
+ const installMethod = getFlagString(args.flags, 'install-method', 'auto');
11
+ const preferBrewOnMac = installMethod === 'brew';
12
+ console.log('Checking Codex installation...');
13
+ const installResult = await ensureCodexInstalled({
14
+ autoInstall: true,
15
+ preferBrewOnMac,
16
+ });
17
+ if (!installResult.installed) {
18
+ const attempts = installResult.attempts.length > 0
19
+ ? `Attempted:\n- ${installResult.attempts.join('\n- ')}`
20
+ : 'No installation methods were attempted.';
21
+ throw new Error(`${attempts}\n\n${installResult.error ?? getCodexInstallHelp()}`);
22
+ }
23
+ console.log(`Codex ready (${installResult.version ?? 'unknown version'})`);
24
+ if (hasFlag(args.flags, 'skip-login')) {
25
+ await updateEnvFile({
26
+ LLM_PROVIDER: 'openai-codex',
27
+ LLM_MODEL: 'openai-codex/gpt-5.3',
28
+ LLM_API_KEY: '',
29
+ });
30
+ console.log('Onboarding complete (login skipped).');
31
+ return;
32
+ }
33
+ await runAuthCommand({
34
+ positional: ['auth', 'login'],
35
+ flags: {
36
+ provider: 'openai-codex',
37
+ ...(hasFlag(args.flags, 'device-auth') ? { 'device-auth': true } : {}),
38
+ ...(hasFlag(args.flags, 'no-device-fallback') ? { 'no-device-fallback': true } : {}),
39
+ },
40
+ });
41
+ console.log('Onboarding complete.');
42
+ }
43
+ //# sourceMappingURL=onboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboard.js","sourceRoot":"","sources":["../../../src/cli/commands/onboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,OAAO,EAAmB,MAAM,YAAY,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAgB;IACtD,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;IAE5E,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,8BAA8B,UAAU,2BAA2B,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC1E,MAAM,eAAe,GAAG,aAAa,KAAK,MAAM,CAAC;IAEjD,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,MAAM,oBAAoB,CAAC;QAC/C,WAAW,EAAE,IAAI;QACjB,eAAe;KAChB,CAAC,CAAC;IAEH,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAChD,CAAC,CAAC,iBAAiB,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACxD,CAAC,CAAC,yCAAyC,CAAC;QAE9C,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,OAAO,aAAa,CAAC,KAAK,IAAI,mBAAmB,EAAE,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gBAAgB,aAAa,CAAC,OAAO,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAE3E,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC;QACtC,MAAM,aAAa,CAAC;YAClB,YAAY,EAAE,cAAc;YAC5B,SAAS,EAAE,sBAAsB;YACjC,WAAW,EAAE,EAAE;SAChB,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IAED,MAAM,cAAc,CAAC;QACnB,UAAU,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;QAC7B,KAAK,EAAE;YACL,QAAQ,EAAE,cAAc;YACxB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrF;KACF,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type ParsedArgs } from '../argv.js';
2
+ export declare function runUninstallCommand(args: ParsedArgs): Promise<void>;
3
+ //# sourceMappingURL=uninstall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/uninstall.ts"],"names":[],"mappings":"AAMA,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAgBtD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAkDzE"}
@@ -0,0 +1,193 @@
1
+ import os from 'node:os';
2
+ import path from 'node:path';
3
+ import { promises as fs } from 'node:fs';
4
+ import { spawnSync } from 'node:child_process';
5
+ import { createInterface } from 'node:readline/promises';
6
+ import { stdin as input, stdout as output } from 'node:process';
7
+ import { hasFlag } from '../argv.js';
8
+ export async function runUninstallCommand(args) {
9
+ const confirmBypass = hasFlag(args.flags, 'yes') || hasFlag(args.flags, 'y');
10
+ const removeConfig = hasFlag(args.flags, 'remove-config');
11
+ const removeWorkspace = hasFlag(args.flags, 'remove-workspace');
12
+ const npmPackage = process.env['KEYGATE_NPM_PACKAGE']?.trim() || '@puukis/cli';
13
+ const legacyNpmPackage = '@keygate/cli';
14
+ const targets = getRemovalTargets({ removeConfig, removeWorkspace });
15
+ const existingTargets = await filterExistingPaths(targets);
16
+ console.log('Keygate uninstall');
17
+ console.log(`- npm package target: ${npmPackage}`);
18
+ if (existingTargets.length > 0) {
19
+ console.log('- local targets to remove:');
20
+ for (const target of existingTargets) {
21
+ console.log(` - ${target}`);
22
+ }
23
+ }
24
+ else {
25
+ console.log('- no local install artifacts detected');
26
+ }
27
+ if (!removeConfig) {
28
+ console.log(`- keeping config: ${path.join(os.homedir(), '.config', 'keygate')}`);
29
+ }
30
+ if (!removeWorkspace) {
31
+ console.log(`- keeping workspace: ${path.join(os.homedir(), 'keygate-workspace')}`);
32
+ }
33
+ if (!confirmBypass) {
34
+ const confirmed = await confirmUninstall();
35
+ if (!confirmed) {
36
+ console.log('Uninstall cancelled.');
37
+ return;
38
+ }
39
+ }
40
+ const npmResults = uninstallNpmPackages([npmPackage, legacyNpmPackage, 'keygate']);
41
+ const pathResults = await removePaths(existingTargets);
42
+ console.log('');
43
+ console.log('Uninstall summary:');
44
+ for (const result of npmResults) {
45
+ const prefix = result.removed ? '✓' : result.skipped ? '-' : '!';
46
+ console.log(`${prefix} npm ${result.packageName}: ${result.detail}`);
47
+ }
48
+ for (const result of pathResults) {
49
+ const prefix = result.removed ? '✓' : result.skipped ? '-' : '!';
50
+ console.log(`${prefix} ${result.path}: ${result.detail}`);
51
+ }
52
+ }
53
+ async function confirmUninstall() {
54
+ if (!input.isTTY || !output.isTTY) {
55
+ throw new Error('Non-interactive shell detected. Re-run with --yes to confirm uninstall.');
56
+ }
57
+ const rl = createInterface({ input, output });
58
+ try {
59
+ const answer = await rl.question('Continue and uninstall Keygate? [y/N] ');
60
+ return /^[Yy]$/.test(answer.trim());
61
+ }
62
+ finally {
63
+ rl.close();
64
+ }
65
+ }
66
+ function uninstallNpmPackages(packageNames) {
67
+ const uniqueNames = Array.from(new Set(packageNames.filter(Boolean)));
68
+ if (uniqueNames.length === 0) {
69
+ return [];
70
+ }
71
+ const npmAvailable = isNpmAvailable();
72
+ if (!npmAvailable) {
73
+ return uniqueNames.map((packageName) => ({
74
+ packageName,
75
+ removed: false,
76
+ skipped: true,
77
+ detail: 'npm not found; skipped',
78
+ }));
79
+ }
80
+ return uniqueNames.map((packageName) => {
81
+ if (!isPackageInstalled(packageName)) {
82
+ return {
83
+ packageName,
84
+ removed: false,
85
+ skipped: true,
86
+ detail: 'not installed',
87
+ };
88
+ }
89
+ const result = spawnSync('npm', ['uninstall', '-g', packageName], {
90
+ encoding: 'utf8',
91
+ });
92
+ if (result.status === 0) {
93
+ return {
94
+ packageName,
95
+ removed: true,
96
+ skipped: false,
97
+ detail: 'removed',
98
+ };
99
+ }
100
+ const message = normalizeSpawnMessage(result);
101
+ return {
102
+ packageName,
103
+ removed: false,
104
+ skipped: false,
105
+ detail: message,
106
+ };
107
+ });
108
+ }
109
+ function isNpmAvailable() {
110
+ const check = spawnSync('npm', ['--version'], {
111
+ encoding: 'utf8',
112
+ });
113
+ return !check.error && check.status === 0;
114
+ }
115
+ function isPackageInstalled(packageName) {
116
+ const result = spawnSync('npm', ['list', '-g', '--depth=0', packageName], {
117
+ encoding: 'utf8',
118
+ });
119
+ return result.status === 0;
120
+ }
121
+ function normalizeSpawnMessage(result) {
122
+ if (result.error) {
123
+ return result.error.message;
124
+ }
125
+ const stderr = (result.stderr ?? '').toString().trim();
126
+ if (stderr.length > 0) {
127
+ return stderr;
128
+ }
129
+ const stdout = (result.stdout ?? '').toString().trim();
130
+ if (stdout.length > 0) {
131
+ return stdout;
132
+ }
133
+ return `failed with exit code ${result.status ?? 'unknown'}`;
134
+ }
135
+ function getRemovalTargets(options) {
136
+ const homeDir = os.homedir();
137
+ const targets = [
138
+ path.join(homeDir, '.local', 'bin', 'keygate'),
139
+ path.join(homeDir, '.local', 'share', 'keygate'),
140
+ path.join(homeDir, 'keygate-bin', 'keygate.cmd'),
141
+ ];
142
+ const localAppData = process.env['LOCALAPPDATA'];
143
+ if (localAppData) {
144
+ targets.push(path.join(localAppData, 'keygate'));
145
+ }
146
+ if (options.removeConfig) {
147
+ targets.push(path.join(homeDir, '.config', 'keygate'));
148
+ }
149
+ if (options.removeWorkspace) {
150
+ targets.push(path.join(homeDir, 'keygate-workspace'));
151
+ }
152
+ return Array.from(new Set(targets));
153
+ }
154
+ async function filterExistingPaths(paths) {
155
+ const checks = await Promise.all(paths.map(async (targetPath) => ({
156
+ path: targetPath,
157
+ exists: await pathExists(targetPath),
158
+ })));
159
+ return checks.filter((entry) => entry.exists).map((entry) => entry.path);
160
+ }
161
+ async function pathExists(targetPath) {
162
+ try {
163
+ await fs.lstat(targetPath);
164
+ return true;
165
+ }
166
+ catch {
167
+ return false;
168
+ }
169
+ }
170
+ async function removePaths(paths) {
171
+ const results = [];
172
+ for (const targetPath of paths) {
173
+ try {
174
+ await fs.rm(targetPath, { recursive: true, force: true });
175
+ results.push({
176
+ path: targetPath,
177
+ removed: true,
178
+ skipped: false,
179
+ detail: 'removed',
180
+ });
181
+ }
182
+ catch (error) {
183
+ results.push({
184
+ path: targetPath,
185
+ removed: false,
186
+ skipped: false,
187
+ detail: error instanceof Error ? error.message : String(error),
188
+ });
189
+ }
190
+ }
191
+ return results;
192
+ }
193
+ //# sourceMappingURL=uninstall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../../src/cli/commands/uninstall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,OAAO,EAAmB,MAAM,YAAY,CAAC;AAgBtD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAgB;IACxD,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC7E,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IAC1D,MAAM,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,IAAI,aAAa,CAAC;IAC/E,MAAM,gBAAgB,GAAG,cAAc,CAAC;IAExC,MAAM,OAAO,GAAG,iBAAiB,CAAC,EAAE,YAAY,EAAE,eAAe,EAAE,CAAC,CAAC;IACrE,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAE3D,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CAAC,yBAAyB,UAAU,EAAE,CAAC,CAAC;IACnD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,KAAK,MAAM,MAAM,IAAI,eAAe,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,mBAAmB,CAAC,EAAE,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,SAAS,GAAG,MAAM,gBAAgB,EAAE,CAAC;QAC3C,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,oBAAoB,CAAC,CAAC,UAAU,EAAE,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC;IACnF,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,eAAe,CAAC,CAAC;IAEvD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,QAAQ,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QACjE,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,KAAK,UAAU,gBAAgB;IAC7B,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC7F,CAAC;IAED,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC,CAAC;QAC3E,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,YAAsB;IAClD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACtE,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,YAAY,GAAG,cAAc,EAAE,CAAC;IACtC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACvC,WAAW;YACX,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,wBAAwB;SACjC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;QACrC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,OAAO;gBACL,WAAW;gBACX,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,eAAe;aACxB,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE;YAChE,QAAQ,EAAE,MAAM;SACjB,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO;gBACL,WAAW;gBACX,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,SAAS;aAClB,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO;YACL,WAAW;YACX,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,KAAK;YACd,MAAM,EAAE,OAAO;SAChB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc;IACrB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,WAAW,CAAC,EAAE;QAC5C,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;IAEH,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAmB;IAC7C,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE;QACxE,QAAQ,EAAE,MAAM;KACjB,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAoC;IACjE,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;IACvD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;IACvD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,yBAAyB,MAAM,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;AAC/D,CAAC;AAED,SAAS,iBAAiB,CAAC,OAA4D;IACrF,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG;QACd,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,aAAa,CAAC;KACjD,CAAC;IAEF,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACjD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,KAAe;IAChD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;QAC/B,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,MAAM,UAAU,CAAC,UAAU,CAAC;KACrC,CAAC,CAAC,CACJ,CAAC;IAEF,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC3E,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,UAAkB;IAC1C,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,KAAe;IACxC,MAAM,OAAO,GAAwB,EAAE,CAAC;IAExC,KAAK,MAAM,UAAU,IAAI,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1D,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,SAAS;aAClB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,UAAU;gBAChB,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC/D,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { type ParsedArgs } from '../argv.js';
2
+ export declare function runUpdateCommand(args: ParsedArgs): Promise<void>;
3
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"AAGA,OAAO,EAAW,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAStD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCtE"}
@@ -0,0 +1,314 @@
1
+ import path from 'node:path';
2
+ import fs from 'node:fs';
3
+ import { spawnSync } from 'node:child_process';
4
+ import { hasFlag } from '../argv.js';
5
+ export async function runUpdateCommand(args) {
6
+ const checkOnly = hasFlag(args.flags, 'check-only');
7
+ const npmPackageOverride = process.env['KEYGATE_NPM_PACKAGE']?.trim();
8
+ const packageCandidates = uniqueStrings([npmPackageOverride || '@puukis/cli', '@keygate/cli', 'keygate']);
9
+ const runtimeEntry = process.argv[1] ? path.resolve(process.argv[1]) : undefined;
10
+ const repoRoot = detectRepoRoot(runtimeEntry);
11
+ const npmInstall = detectNpmInstall(packageCandidates);
12
+ const mode = resolveInstallMode(repoRoot, npmInstall);
13
+ console.log('Keygate update');
14
+ console.log(`- mode detected: ${mode}`);
15
+ if (mode === 'npm') {
16
+ if (!npmInstall) {
17
+ throw new Error('Detected npm install mode but could not resolve installed package.');
18
+ }
19
+ updateNpmInstall(npmInstall, checkOnly);
20
+ return;
21
+ }
22
+ if (mode === 'github') {
23
+ if (!repoRoot) {
24
+ throw new Error('Detected github install mode but could not resolve repository path.');
25
+ }
26
+ updateGithubInstall(repoRoot, checkOnly);
27
+ return;
28
+ }
29
+ throw new Error('Could not determine installation mode. If installed via npm, reinstall with npm. ' +
30
+ 'If installed via source, run the latest install script to restore launcher metadata.');
31
+ }
32
+ function resolveInstallMode(repoRoot, npmInstall) {
33
+ if (repoRoot) {
34
+ return 'github';
35
+ }
36
+ if (npmInstall) {
37
+ return 'npm';
38
+ }
39
+ return 'unknown';
40
+ }
41
+ function detectRepoRoot(runtimeEntry) {
42
+ if (!runtimeEntry) {
43
+ return undefined;
44
+ }
45
+ let current = path.dirname(runtimeEntry);
46
+ while (true) {
47
+ const packageJsonPath = path.join(current, 'package.json');
48
+ const gitDirPath = path.join(current, '.git');
49
+ if (fs.existsSync(packageJsonPath) && fs.existsSync(gitDirPath)) {
50
+ const pkg = readJsonFile(packageJsonPath);
51
+ if (pkg?.name === 'keygate') {
52
+ return current;
53
+ }
54
+ }
55
+ const parent = path.dirname(current);
56
+ if (parent === current) {
57
+ return undefined;
58
+ }
59
+ current = parent;
60
+ }
61
+ }
62
+ function detectNpmInstall(packageCandidates) {
63
+ if (!isCommandAvailable('npm')) {
64
+ return undefined;
65
+ }
66
+ for (const packageName of packageCandidates) {
67
+ const result = spawnSync('npm', ['list', '-g', '--depth=0', '--json', packageName], {
68
+ encoding: 'utf8',
69
+ });
70
+ if (result.status !== 0 && result.stdout.trim().length === 0) {
71
+ continue;
72
+ }
73
+ const parsed = tryParseJson(result.stdout);
74
+ const version = parsed?.dependencies?.[packageName]?.version;
75
+ if (version) {
76
+ return { packageName, version };
77
+ }
78
+ }
79
+ return undefined;
80
+ }
81
+ function updateNpmInstall(info, checkOnly) {
82
+ const latest = getNpmLatestVersion(info.packageName);
83
+ const current = info.version;
84
+ console.log(`- npm package: ${info.packageName}`);
85
+ console.log(`- installed version: ${current}`);
86
+ if (latest) {
87
+ console.log(`- latest npm version: ${latest}`);
88
+ }
89
+ if (!latest) {
90
+ if (checkOnly) {
91
+ console.log('Could not resolve latest npm version.');
92
+ return;
93
+ }
94
+ console.log('Latest version lookup failed; attempting update anyway...');
95
+ }
96
+ else {
97
+ const comparison = compareVersions(current, latest);
98
+ if (comparison >= 0) {
99
+ console.log('Already up to date.');
100
+ return;
101
+ }
102
+ if (checkOnly) {
103
+ console.log('Update available.');
104
+ return;
105
+ }
106
+ }
107
+ const update = spawnSync('npm', ['install', '-g', `${info.packageName}@latest`], {
108
+ stdio: 'inherit',
109
+ encoding: 'utf8',
110
+ });
111
+ if (update.status !== 0) {
112
+ throw new Error(`npm update failed with exit code ${update.status ?? 'unknown'}`);
113
+ }
114
+ const refreshed = detectNpmInstall([info.packageName]);
115
+ const finalVersion = refreshed?.version ?? 'unknown';
116
+ console.log(`Updated ${info.packageName} to ${finalVersion}.`);
117
+ }
118
+ function getNpmLatestVersion(packageName) {
119
+ const view = spawnSync('npm', ['view', packageName, 'version'], {
120
+ encoding: 'utf8',
121
+ });
122
+ if (view.status !== 0) {
123
+ return undefined;
124
+ }
125
+ const version = view.stdout.trim();
126
+ return version.length > 0 ? version : undefined;
127
+ }
128
+ function updateGithubInstall(repoRoot, checkOnly) {
129
+ if (!isCommandAvailable('git')) {
130
+ throw new Error('git is required for source update.');
131
+ }
132
+ const branch = resolveOriginBranch(repoRoot);
133
+ const remoteRef = `origin/${branch}`;
134
+ const localVersion = readLocalVersion(repoRoot);
135
+ console.log(`- source repo: ${repoRoot}`);
136
+ console.log(`- tracking branch: ${remoteRef}`);
137
+ console.log(`- installed version: ${localVersion}`);
138
+ runOrThrow('git', ['fetch', 'origin', branch, '--tags'], repoRoot, false);
139
+ const remoteVersion = readRemoteVersion(repoRoot, remoteRef);
140
+ if (remoteVersion) {
141
+ console.log(`- latest github version: ${remoteVersion}`);
142
+ }
143
+ else {
144
+ console.log('- latest github version: unknown (package.json unavailable on remote ref)');
145
+ }
146
+ const { ahead, behind } = readAheadBehind(repoRoot, remoteRef);
147
+ console.log(`- commit delta (ahead/behind): ${ahead}/${behind}`);
148
+ const versionOutdated = remoteVersion !== undefined ? compareVersions(localVersion, remoteVersion) < 0 : false;
149
+ const needsUpdate = behind > 0 || versionOutdated;
150
+ if (!needsUpdate) {
151
+ console.log('Already up to date.');
152
+ return;
153
+ }
154
+ if (checkOnly) {
155
+ console.log('Update available.');
156
+ return;
157
+ }
158
+ if (hasUncommittedChanges(repoRoot)) {
159
+ throw new Error('Repository has local changes. Commit/stash them before running `keygate update`.');
160
+ }
161
+ ensurePnpmAvailable();
162
+ runOrThrow('git', ['pull', '--rebase', 'origin', branch], repoRoot, true);
163
+ runOrThrow('pnpm', ['install'], repoRoot, true);
164
+ runOrThrow('pnpm', ['build'], repoRoot, true);
165
+ const finalVersion = readLocalVersion(repoRoot);
166
+ console.log(`Updated source install to ${finalVersion}.`);
167
+ }
168
+ function resolveOriginBranch(repoRoot) {
169
+ const symbolic = spawnSync('git', ['symbolic-ref', '--short', 'refs/remotes/origin/HEAD'], {
170
+ cwd: repoRoot,
171
+ encoding: 'utf8',
172
+ });
173
+ if (symbolic.status !== 0) {
174
+ return 'main';
175
+ }
176
+ const ref = symbolic.stdout.trim();
177
+ if (!ref.startsWith('origin/')) {
178
+ return 'main';
179
+ }
180
+ return ref.slice('origin/'.length);
181
+ }
182
+ function readLocalVersion(repoRoot) {
183
+ const pkg = readJsonFile(path.join(repoRoot, 'package.json'));
184
+ return pkg?.version?.trim() || '0.0.0';
185
+ }
186
+ function readRemoteVersion(repoRoot, remoteRef) {
187
+ const show = spawnSync('git', ['show', `${remoteRef}:package.json`], {
188
+ cwd: repoRoot,
189
+ encoding: 'utf8',
190
+ });
191
+ if (show.status !== 0) {
192
+ return undefined;
193
+ }
194
+ const pkg = tryParseJson(show.stdout);
195
+ const version = pkg?.version?.trim();
196
+ return version && version.length > 0 ? version : undefined;
197
+ }
198
+ function readAheadBehind(repoRoot, remoteRef) {
199
+ const counts = spawnSync('git', ['rev-list', '--left-right', '--count', `HEAD...${remoteRef}`], {
200
+ cwd: repoRoot,
201
+ encoding: 'utf8',
202
+ });
203
+ if (counts.status !== 0) {
204
+ return { ahead: 0, behind: 0 };
205
+ }
206
+ const parts = counts.stdout.trim().split(/\s+/g);
207
+ const ahead = Number.parseInt(parts[0] ?? '0', 10);
208
+ const behind = Number.parseInt(parts[1] ?? '0', 10);
209
+ return {
210
+ ahead: Number.isFinite(ahead) ? ahead : 0,
211
+ behind: Number.isFinite(behind) ? behind : 0,
212
+ };
213
+ }
214
+ function hasUncommittedChanges(repoRoot) {
215
+ const status = spawnSync('git', ['status', '--porcelain'], {
216
+ cwd: repoRoot,
217
+ encoding: 'utf8',
218
+ });
219
+ if (status.status !== 0) {
220
+ return true;
221
+ }
222
+ return status.stdout.trim().length > 0;
223
+ }
224
+ function ensurePnpmAvailable() {
225
+ if (isCommandAvailable('pnpm')) {
226
+ return;
227
+ }
228
+ if (!isCommandAvailable('corepack')) {
229
+ throw new Error('pnpm is not available and corepack is missing. Install pnpm and retry.');
230
+ }
231
+ runOrThrow('corepack', ['enable'], process.cwd(), true);
232
+ runOrThrow('corepack', ['prepare', 'pnpm@9.15.0', '--activate'], process.cwd(), true);
233
+ if (!isCommandAvailable('pnpm')) {
234
+ throw new Error('Failed to activate pnpm via corepack.');
235
+ }
236
+ }
237
+ function isCommandAvailable(command) {
238
+ const result = spawnSync(command, ['--version'], {
239
+ encoding: 'utf8',
240
+ });
241
+ return !result.error && result.status === 0;
242
+ }
243
+ function runOrThrow(command, args, cwd, inheritStdio) {
244
+ const result = spawnSync(command, args, {
245
+ cwd,
246
+ encoding: 'utf8',
247
+ stdio: inheritStdio ? 'inherit' : 'pipe',
248
+ });
249
+ if (result.status === 0) {
250
+ return;
251
+ }
252
+ if (!inheritStdio) {
253
+ const stderr = result.stderr?.toString().trim();
254
+ const stdout = result.stdout?.toString().trim();
255
+ if (stderr) {
256
+ throw new Error(stderr);
257
+ }
258
+ if (stdout) {
259
+ throw new Error(stdout);
260
+ }
261
+ }
262
+ throw new Error(`${command} ${args.join(' ')} failed with exit code ${result.status ?? 'unknown'}`);
263
+ }
264
+ function compareVersions(a, b) {
265
+ const parsedA = parseSemver(a);
266
+ const parsedB = parseSemver(b);
267
+ if (!parsedA || !parsedB) {
268
+ if (a === b) {
269
+ return 0;
270
+ }
271
+ return a.localeCompare(b, undefined, { numeric: true, sensitivity: 'base' });
272
+ }
273
+ if (parsedA.major !== parsedB.major) {
274
+ return parsedA.major - parsedB.major;
275
+ }
276
+ if (parsedA.minor !== parsedB.minor) {
277
+ return parsedA.minor - parsedB.minor;
278
+ }
279
+ return parsedA.patch - parsedB.patch;
280
+ }
281
+ function parseSemver(version) {
282
+ const match = version.trim().match(/^v?(\d+)\.(\d+)\.(\d+)(?:[-+].*)?$/);
283
+ if (!match) {
284
+ return undefined;
285
+ }
286
+ const major = Number.parseInt(match[1], 10);
287
+ const minor = Number.parseInt(match[2], 10);
288
+ const patch = Number.parseInt(match[3], 10);
289
+ if (!Number.isFinite(major) || !Number.isFinite(minor) || !Number.isFinite(patch)) {
290
+ return undefined;
291
+ }
292
+ return { major, minor, patch };
293
+ }
294
+ function readJsonFile(filePath) {
295
+ try {
296
+ const raw = fs.readFileSync(filePath, 'utf8');
297
+ return JSON.parse(raw);
298
+ }
299
+ catch {
300
+ return undefined;
301
+ }
302
+ }
303
+ function tryParseJson(raw) {
304
+ try {
305
+ return JSON.parse(raw);
306
+ }
307
+ catch {
308
+ return undefined;
309
+ }
310
+ }
311
+ function uniqueStrings(values) {
312
+ return Array.from(new Set(values.filter((value) => value.trim().length > 0)));
313
+ }
314
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/cli/commands/update.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function runCli(argv: string[]): Promise<boolean>;
2
+ export declare function printHelp(): void;
3
+ //# sourceMappingURL=index.d.ts.map