@sentry/junior 0.202.0 → 0.204.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 (174) hide show
  1. package/dist/agent-CMyTD4DD.js +17509 -0
  2. package/dist/agent-hooks-Bbcp9e33.js +4040 -0
  3. package/dist/agent-runner-DNb1A49M.js +678 -0
  4. package/dist/api/schema.d.ts +2728 -2639
  5. package/dist/api/schema.js +4 -169
  6. package/dist/api.d.ts +23 -17
  7. package/dist/api.js +3881 -5326
  8. package/dist/app-B1TOqBI8.d.ts +246 -0
  9. package/dist/app.d.ts +4 -520
  10. package/dist/app.js +9522 -11875
  11. package/dist/auth-pause-state-DosEalIG.js +168 -0
  12. package/dist/catalog-runtime-BReos-D4.js +7 -0
  13. package/dist/checkpoint-CNrPyRJN.js +2450 -0
  14. package/dist/cli/chat.d.ts +20 -0
  15. package/dist/cli/chat.js +229 -336
  16. package/dist/cli/check.d.ts +8 -0
  17. package/dist/cli/check.js +513 -806
  18. package/dist/cli/env.d.ts +13 -0
  19. package/dist/cli/env.js +63 -12
  20. package/dist/cli/init.d.ts +3 -0
  21. package/dist/cli/init.js +90 -159
  22. package/dist/cli/main.d.ts +6 -0
  23. package/dist/cli/main.js +43 -64
  24. package/dist/cli/plugins.d.ts +13 -0
  25. package/dist/cli/plugins.js +148 -227
  26. package/dist/cli/run.d.ts +16 -0
  27. package/dist/cli/run.js +52 -8
  28. package/dist/cli/snapshot-create.d.ts +4 -0
  29. package/dist/cli/snapshot-create.js +71 -125
  30. package/dist/cli/upgrade.d.ts +15 -0
  31. package/dist/cli/upgrade.js +232 -335
  32. package/dist/config-nGCW1OTG.js +941 -0
  33. package/dist/context-B45_WqVX.js +298 -0
  34. package/dist/conversation-privacy-B4voFRSm.js +182 -0
  35. package/dist/conversation-work-C6y3T5Hx.js +51 -0
  36. package/dist/credential-sync-kXr1hvO1.js +2660 -0
  37. package/dist/db-BeyXKJOI.d.ts +5 -0
  38. package/dist/destinations-BeBiJeEM.js +29 -0
  39. package/dist/execution-stats-DWfSihcH.js +373 -0
  40. package/dist/executor-DcMSlI5c.js +721 -0
  41. package/dist/experimental-CIXf7Uye.js +46 -0
  42. package/dist/history-ClE4toxe.d.ts +32 -0
  43. package/dist/history-CqTuSAdI.js +441 -0
  44. package/dist/instrumentation.d.ts +3 -3
  45. package/dist/instrumentation.js +130 -176
  46. package/dist/job-queue-Drn_LXlM.js +63 -0
  47. package/dist/logging-BzAk1S_s.js +1210 -0
  48. package/dist/model-profile-CZmVoGdX.js +49 -0
  49. package/dist/nitro.d.ts +31 -36
  50. package/dist/nitro.js +275 -456
  51. package/dist/oauth-callback-server-JiftokvA.js +130 -0
  52. package/dist/oauth-relay-CdCnu80W.js +62 -0
  53. package/dist/package-discovery-7a9YqLhE.js +455 -0
  54. package/dist/pending-auth-CWmSdZVg.js +185 -0
  55. package/dist/plugin-module-BKGOXca2.js +81 -0
  56. package/dist/plugins-BI9A1vKA.d.ts +95 -0
  57. package/dist/plugins-egKWjgue.js +99 -0
  58. package/dist/private-trace-result-BLvBjy_e.js +16 -0
  59. package/dist/profile-CrT5nXbw.js +861 -0
  60. package/dist/registry-DH1xUo2N.js +1419 -0
  61. package/dist/reporting-schema-DosTN__Q.js +105 -0
  62. package/dist/resolve-CZHnfxaS.js +546 -0
  63. package/dist/rolldown-runtime-B4FMCO8f.js +28 -0
  64. package/dist/runner-CZV2sC46.js +392 -0
  65. package/dist/sandbox-egress-signals-bHZfmhbd.js +46 -0
  66. package/dist/schema-Rn8-XEaN.js +1140 -0
  67. package/dist/sentry-CD3SdJl-.js +26 -0
  68. package/dist/skills-CIcDQSgM.js +316 -0
  69. package/dist/spawn-DdkUFRmq.js +29 -0
  70. package/dist/stats-DTUbAb88.js +2634 -0
  71. package/dist/store-C5qxF2ac.d.ts +208 -0
  72. package/dist/task-queue-CJIR4RF7.js +136 -0
  73. package/dist/task-runner-D-O3A-Cp.js +639 -0
  74. package/dist/thread-state-CRc9jTJS.js +431 -0
  75. package/dist/turn-execution-BkinIdJF.js +47 -0
  76. package/dist/turn-lifecycle-DQV19VTW.js +54 -0
  77. package/dist/usage-D3EbSO7w.js +296 -0
  78. package/dist/usage-schema-CKaDkH_j.js +20 -0
  79. package/dist/validation-C2CR-OX3.js +40 -0
  80. package/dist/vercel-queue-DIkVcfK4.js +167 -0
  81. package/dist/vercel.d.ts +6 -6
  82. package/dist/vercel.js +14 -6
  83. package/dist/version-CnXZ614E.d.ts +5 -0
  84. package/dist/version-DxcWdoKa.js +8 -0
  85. package/dist/version.d.ts +2 -4
  86. package/dist/version.js +2 -6
  87. package/dist/web-authorization-RMBxAR_t.js +76 -0
  88. package/dist/web-input-3EPfpf55.js +494 -0
  89. package/dist/work-fGofI7Op.js +509 -0
  90. package/dist/worker-CsOLq-mR.js +625 -0
  91. package/package.json +9 -9
  92. package/dist/agent-hooks-UXITLYOK.js +0 -51
  93. package/dist/catalog-runtime-BG3JLLK2.js +0 -14
  94. package/dist/chunk-2LYHWMR4.js +0 -46
  95. package/dist/chunk-2MK3QBGA.js +0 -321
  96. package/dist/chunk-3PGQSKJV.js +0 -692
  97. package/dist/chunk-3UI3WFTX.js +0 -519
  98. package/dist/chunk-3Y47VMHV.js +0 -6
  99. package/dist/chunk-4UO6FK4G.js +0 -64
  100. package/dist/chunk-5NOPO64K.js +0 -198
  101. package/dist/chunk-5PKWYPFT.js +0 -2943
  102. package/dist/chunk-63NKKFJL.js +0 -1228
  103. package/dist/chunk-6AYH6252.js +0 -787
  104. package/dist/chunk-6Y5B5PEX.js +0 -80
  105. package/dist/chunk-7DHZP5KJ.js +0 -333
  106. package/dist/chunk-7H2VZTWN.js +0 -103
  107. package/dist/chunk-7NL7T6VU.js +0 -406
  108. package/dist/chunk-A76OIMYN.js +0 -102
  109. package/dist/chunk-AWMS3SPP.js +0 -58
  110. package/dist/chunk-B3LY5RCL.js +0 -229
  111. package/dist/chunk-BD2KT3OB.js +0 -36
  112. package/dist/chunk-BXCX5QKA.js +0 -2086
  113. package/dist/chunk-C6VVF43U.js +0 -81
  114. package/dist/chunk-CEMMLV5L.js +0 -98
  115. package/dist/chunk-CM5HNV2W.js +0 -131
  116. package/dist/chunk-DA2KGZZI.js +0 -13
  117. package/dist/chunk-DBVY6HLX.js +0 -64
  118. package/dist/chunk-DIB4GX3G.js +0 -8
  119. package/dist/chunk-DKIJ2RP5.js +0 -68
  120. package/dist/chunk-DL2KLKVH.js +0 -931
  121. package/dist/chunk-DWPN6SCH.js +0 -172
  122. package/dist/chunk-ELWOYVOY.js +0 -206
  123. package/dist/chunk-EWT7H65X.js +0 -506
  124. package/dist/chunk-FA6POGLH.js +0 -70
  125. package/dist/chunk-HMREVIO2.js +0 -135
  126. package/dist/chunk-IIWUT4FO.js +0 -820
  127. package/dist/chunk-JAL3CH4G.js +0 -27
  128. package/dist/chunk-JSJQEWBJ.js +0 -3295
  129. package/dist/chunk-KHKKHDLD.js +0 -387
  130. package/dist/chunk-LA6R4A7Q.js +0 -706
  131. package/dist/chunk-LOOU2DUR.js +0 -20428
  132. package/dist/chunk-M6FHWXE3.js +0 -700
  133. package/dist/chunk-M76HMB7M.js +0 -1856
  134. package/dist/chunk-MAGNK5J4.js +0 -1520
  135. package/dist/chunk-MTM5IFCY.js +0 -1190
  136. package/dist/chunk-N7TMSOZH.js +0 -235
  137. package/dist/chunk-NHJU2ZAL.js +0 -56
  138. package/dist/chunk-NSXKRGRT.js +0 -717
  139. package/dist/chunk-OWMPFXJA.js +0 -1764
  140. package/dist/chunk-PDO5BLNM.js +0 -22
  141. package/dist/chunk-PEQXYSSE.js +0 -45
  142. package/dist/chunk-PW4P4JYF.js +0 -1135
  143. package/dist/chunk-QB54UQUS.js +0 -320
  144. package/dist/chunk-QP3OGJXF.js +0 -105
  145. package/dist/chunk-RC745GGZ.js +0 -122
  146. package/dist/chunk-REOIRYPR.js +0 -37
  147. package/dist/chunk-SCOZRLZ4.js +0 -164
  148. package/dist/chunk-TXJSXBV5.js +0 -1433
  149. package/dist/chunk-TXKUKMVO.js +0 -417
  150. package/dist/chunk-U2GPUYAL.js +0 -3656
  151. package/dist/chunk-UIE3R5XU.js +0 -17
  152. package/dist/chunk-UXPG6ZIN.js +0 -84
  153. package/dist/chunk-VFUK3X5B.js +0 -50
  154. package/dist/chunk-WQSHDTTI.js +0 -1163
  155. package/dist/chunk-X6GDDWQH.js +0 -60
  156. package/dist/chunk-Y2CM7HXH.js +0 -111
  157. package/dist/chunk-Y7X25LFY.js +0 -15
  158. package/dist/chunk-YDUR3ZYW.js +0 -10
  159. package/dist/conversation-work-VIOQ5ZF3.js +0 -54
  160. package/dist/db-3L2MCVRI.js +0 -26
  161. package/dist/discovery-DWVDM7UK.js +0 -44
  162. package/dist/experimental-P5FZM4CU.js +0 -12
  163. package/dist/oauth-callback-server-YVV6C6T2.js +0 -243
  164. package/dist/oauth-relay-5XPVRPYB.js +0 -8
  165. package/dist/plugins-YTYJMMJF.js +0 -14
  166. package/dist/runner-LQ7RETDP.js +0 -522
  167. package/dist/sandbox-egress-signals-FIL7EGPR.js +0 -73
  168. package/dist/sentry-MB3NL3IR.js +0 -42
  169. package/dist/skills-XRWYEDCD.js +0 -27
  170. package/dist/spawn-RC6SJUAI.js +0 -42
  171. package/dist/task-runner-7DY7ARYH.js +0 -36
  172. package/dist/validation-7MNQGCJA.js +0 -17
  173. package/dist/work-COALHUCG.js +0 -51
  174. package/dist/worker-6MURZIPD.js +0 -24
@@ -1,249 +1,170 @@
1
- import {
2
- validatePluginEgressCredentialHooks,
3
- validatePluginRegistrations
4
- } from "../chunk-C6VVF43U.js";
5
- import {
6
- pluginCatalogConfigFromPluginSet,
7
- pluginCliRegistrationsFromPluginSet,
8
- pluginRuntimeRegistrationsFromPluginSet
9
- } from "../chunk-CM5HNV2W.js";
10
- import {
11
- loadAppPluginSet
12
- } from "../chunk-Y2CM7HXH.js";
13
- import {
14
- createPluginLogger,
15
- setPlugins,
16
- validatePlugins
17
- } from "../chunk-U2GPUYAL.js";
18
- import "../chunk-3Y47VMHV.js";
19
- import {
20
- getDb
21
- } from "../chunk-M76HMB7M.js";
22
- import "../chunk-PW4P4JYF.js";
23
- import "../chunk-NSXKRGRT.js";
24
- import "../chunk-2MK3QBGA.js";
25
- import "../chunk-7NL7T6VU.js";
26
- import "../chunk-VFUK3X5B.js";
27
- import "../chunk-63NKKFJL.js";
28
- import "../chunk-NHJU2ZAL.js";
29
- import "../chunk-5NOPO64K.js";
30
- import {
31
- pluginCatalogRuntime
32
- } from "../chunk-YDUR3ZYW.js";
33
- import "../chunk-BXCX5QKA.js";
34
- import "../chunk-CEMMLV5L.js";
35
- import "../chunk-N7TMSOZH.js";
36
- import "../chunk-DWPN6SCH.js";
37
- import "../chunk-TXKUKMVO.js";
38
- import "../chunk-MAGNK5J4.js";
39
- import "../chunk-PEQXYSSE.js";
40
- import "../chunk-HMREVIO2.js";
41
-
42
- // src/cli/plugins.ts
43
- import { stderr as defaultStderr, stdout as defaultStdout } from "process";
1
+ import { Et as getDb, _t as createPluginLogger, d as setPlugins, f as validatePlugins } from "../agent-hooks-Bbcp9e33.js";
2
+ import { n as pluginCatalogRuntime } from "../catalog-runtime-BReos-D4.js";
3
+ import { n as validatePluginRegistrations, t as validatePluginEgressCredentialHooks } from "../validation-C2CR-OX3.js";
4
+ import { a as pluginRuntimeRegistrationsFromPluginSet, i as pluginCliRegistrationsFromPluginSet, r as pluginCatalogConfigFromPluginSet } from "../plugins-egKWjgue.js";
5
+ import { t as loadAppPluginSet } from "../plugin-module-BKGOXca2.js";
6
+ import { stderr, stdout } from "node:process";
44
7
  import { createJiti } from "jiti";
45
8
  import { Command, CommanderError } from "commander";
46
- var pluginCliLoader = createJiti(import.meta.url, { moduleCache: false });
47
- var CORE_COMMAND_NAMES = /* @__PURE__ */ new Set([
48
- "chat",
49
- "check",
50
- "init",
51
- "snapshot",
52
- "upgrade"
9
+ //#region src/cli/plugins.ts
10
+ /**
11
+ * Plugin CLI bootstrap for the local/package command line.
12
+ * This module imports app plugins, validates top-level namespaces before
13
+ * installing runtime plugin state, and dispatches only plugin-owned subcommands.
14
+ */
15
+ const pluginCliLoader = createJiti(import.meta.url, { moduleCache: false });
16
+ const CORE_COMMAND_NAMES = /* @__PURE__ */ new Set([
17
+ "chat",
18
+ "check",
19
+ "init",
20
+ "snapshot",
21
+ "upgrade"
53
22
  ]);
54
- var PLUGIN_COMMAND_NAME_RE = /^[a-z][a-z0-9-]*$/;
55
- var DEFAULT_IO = {
56
- writeError: (text) => writeStream(defaultStderr, text),
57
- writeOutput: (text) => writeStream(defaultStdout, text)
23
+ const PLUGIN_COMMAND_NAME_RE = /^[a-z][a-z0-9-]*$/;
24
+ const DEFAULT_IO = {
25
+ writeError: (text) => writeStream(stderr, text),
26
+ writeOutput: (text) => writeStream(stdout, text)
58
27
  };
59
28
  function writeStream(stream, text) {
60
- return new Promise((resolve, reject) => {
61
- stream.write(text, (error) => {
62
- if (error) {
63
- reject(error);
64
- return;
65
- }
66
- resolve();
67
- });
68
- });
29
+ return new Promise((resolve, reject) => {
30
+ stream.write(text, (error) => {
31
+ if (error) {
32
+ reject(error);
33
+ return;
34
+ }
35
+ resolve();
36
+ });
37
+ });
69
38
  }
39
+ /** Load the app plugin set once for one CLI process. */
70
40
  async function loadCliPluginSet() {
71
- return await loadAppPluginSet(
72
- process.cwd(),
73
- async (moduleRef) => pluginCliLoader.import(moduleRef.importPath)
74
- );
41
+ return await loadAppPluginSet(process.cwd(), async (moduleRef) => pluginCliLoader.import(moduleRef.importPath));
75
42
  }
76
43
  function findPluginCommand(plugins, commandName) {
77
- for (const plugin of plugins) {
78
- const command = plugin.cli?.commands.find(
79
- (candidate) => candidate.name === commandName
80
- );
81
- if (command) {
82
- return { command, plugin };
83
- }
84
- }
85
- return void 0;
44
+ for (const plugin of plugins) {
45
+ const command = plugin.cli?.commands.find((candidate) => candidate.name === commandName);
46
+ if (command) return {
47
+ command,
48
+ plugin
49
+ };
50
+ }
86
51
  }
87
52
  function createPluginCliHost(args) {
88
- return {
89
- action(handler) {
90
- return async (...actionArgs) => {
91
- const pluginName = args.plugin.manifest.name;
92
- const result = await handler(
93
- {
94
- db: getDb(),
95
- command: {
96
- name: args.command.name,
97
- summary: args.command.summary
98
- },
99
- io: args.io,
100
- log: createPluginLogger(pluginName),
101
- plugin: { name: pluginName }
102
- },
103
- ...actionArgs
104
- );
105
- args.setExitCode(result ?? 0);
106
- };
107
- }
108
- };
53
+ return { action(handler) {
54
+ return async (...actionArgs) => {
55
+ const pluginName = args.plugin.manifest.name;
56
+ const result = await handler({
57
+ db: getDb(),
58
+ command: {
59
+ name: args.command.name,
60
+ summary: args.command.summary
61
+ },
62
+ io: args.io,
63
+ log: createPluginLogger(pluginName),
64
+ plugin: { name: pluginName }
65
+ }, ...actionArgs);
66
+ args.setExitCode(result ?? 0);
67
+ };
68
+ } };
109
69
  }
110
70
  function createPluginCommanderCommand(args) {
111
- const command = new Command(args.command.name).description(args.command.summary).exitOverride().showHelpAfterError().showSuggestionAfterError().configureOutput({
112
- writeOut: (text) => {
113
- void args.io.writeOutput(text);
114
- },
115
- writeErr: (text) => {
116
- void args.io.writeError(text);
117
- },
118
- outputError: (text, write) => {
119
- write(text);
120
- }
121
- });
122
- args.command.configure(command, createPluginCliHost(args));
123
- return command;
71
+ const command = new Command(args.command.name).description(args.command.summary).exitOverride().showHelpAfterError().showSuggestionAfterError().configureOutput({
72
+ writeOut: (text) => {
73
+ args.io.writeOutput(text);
74
+ },
75
+ writeErr: (text) => {
76
+ args.io.writeError(text);
77
+ },
78
+ outputError: (text, write) => {
79
+ write(text);
80
+ }
81
+ });
82
+ args.command.configure(command, createPluginCliHost(args));
83
+ return command;
124
84
  }
125
85
  function validateConfiguredPluginCommand(args) {
126
- const pluginName = args.plugin.manifest.name;
127
- if (args.command.name() !== args.definition.name) {
128
- throw new Error(
129
- `Plugin CLI command "${args.definition.name}" from plugin "${pluginName}" must not rename its top-level command`
130
- );
131
- }
132
- if (args.command.commands.length === 0) {
133
- throw new Error(
134
- `Plugin CLI command "${args.definition.name}" from plugin "${pluginName}" must define at least one subcommand`
135
- );
136
- }
137
- if (args.command.aliases().length > 0) {
138
- throw new Error(
139
- `Plugin CLI command "${args.definition.name}" from plugin "${pluginName}" must not define top-level aliases`
140
- );
141
- }
86
+ const pluginName = args.plugin.manifest.name;
87
+ if (args.command.name() !== args.definition.name) throw new Error(`Plugin CLI command "${args.definition.name}" from plugin "${pluginName}" must not rename its top-level command`);
88
+ if (args.command.commands.length === 0) throw new Error(`Plugin CLI command "${args.definition.name}" from plugin "${pluginName}" must define at least one subcommand`);
89
+ if (args.command.aliases().length > 0) throw new Error(`Plugin CLI command "${args.definition.name}" from plugin "${pluginName}" must not define top-level aliases`);
142
90
  }
143
91
  function validateConfiguredPluginCommands(plugins) {
144
- const ownerByName = /* @__PURE__ */ new Map();
145
- const validationIo = DEFAULT_IO;
146
- for (const plugin of plugins) {
147
- for (const definition of plugin.cli?.commands ?? []) {
148
- const pluginName = plugin.manifest.name;
149
- const existingOwner = ownerByName.get(definition.name);
150
- if (!PLUGIN_COMMAND_NAME_RE.test(definition.name)) {
151
- throw new Error(
152
- `Plugin CLI command "${definition.name}" from plugin "${pluginName}" must be a lowercase command identifier`
153
- );
154
- }
155
- if (CORE_COMMAND_NAMES.has(definition.name)) {
156
- throw new Error(
157
- `Plugin CLI command "${definition.name}" from plugin "${pluginName}" conflicts with a core command`
158
- );
159
- }
160
- if (existingOwner) {
161
- throw new Error(
162
- `Plugin CLI command "${definition.name}" from plugin "${pluginName}" conflicts with plugin "${existingOwner}"`
163
- );
164
- }
165
- ownerByName.set(definition.name, pluginName);
166
- if (typeof definition.configure !== "function") {
167
- throw new Error(
168
- `Plugin CLI command "${definition.name}" from plugin "${pluginName}" must define a configure function`
169
- );
170
- }
171
- let exitCode = 0;
172
- validateConfiguredPluginCommand({
173
- command: createPluginCommanderCommand({
174
- command: definition,
175
- io: validationIo,
176
- plugin,
177
- setExitCode: (nextExitCode) => {
178
- exitCode = nextExitCode;
179
- }
180
- }),
181
- definition,
182
- plugin
183
- });
184
- void exitCode;
185
- }
186
- }
92
+ const ownerByName = /* @__PURE__ */ new Map();
93
+ const validationIo = DEFAULT_IO;
94
+ for (const plugin of plugins) for (const definition of plugin.cli?.commands ?? []) {
95
+ const pluginName = plugin.manifest.name;
96
+ const existingOwner = ownerByName.get(definition.name);
97
+ if (!PLUGIN_COMMAND_NAME_RE.test(definition.name)) throw new Error(`Plugin CLI command "${definition.name}" from plugin "${pluginName}" must be a lowercase command identifier`);
98
+ if (CORE_COMMAND_NAMES.has(definition.name)) throw new Error(`Plugin CLI command "${definition.name}" from plugin "${pluginName}" conflicts with a core command`);
99
+ if (existingOwner) throw new Error(`Plugin CLI command "${definition.name}" from plugin "${pluginName}" conflicts with plugin "${existingOwner}"`);
100
+ ownerByName.set(definition.name, pluginName);
101
+ if (typeof definition.configure !== "function") throw new Error(`Plugin CLI command "${definition.name}" from plugin "${pluginName}" must define a configure function`);
102
+ validateConfiguredPluginCommand({
103
+ command: createPluginCommanderCommand({
104
+ command: definition,
105
+ io: validationIo,
106
+ plugin,
107
+ setExitCode: (nextExitCode) => {}
108
+ }),
109
+ definition,
110
+ plugin
111
+ });
112
+ }
187
113
  }
188
114
  async function loadPluginRegistrations(args) {
189
- const pluginSet = args.pluginSet;
190
- if (!pluginSet) {
191
- return { cliPlugins: [], runtimePlugins: [] };
192
- }
193
- const cliPlugins = pluginCliRegistrationsFromPluginSet(pluginSet);
194
- const runtimePlugins = pluginRuntimeRegistrationsFromPluginSet(pluginSet);
195
- const pluginConfig = pluginCatalogConfigFromPluginSet(pluginSet);
196
- validatePlugins(runtimePlugins);
197
- const previousPluginCatalogConfig = pluginCatalogRuntime.setConfig(pluginConfig);
198
- try {
199
- validatePluginRegistrations(pluginSet.registrations);
200
- validatePluginEgressCredentialHooks(pluginSet.registrations);
201
- args.validateConfiguredCommands?.(cliPlugins);
202
- setPlugins(runtimePlugins);
203
- return { cliPlugins, runtimePlugins };
204
- } catch (error) {
205
- pluginCatalogRuntime.setConfig(previousPluginCatalogConfig);
206
- throw error;
207
- }
115
+ const pluginSet = args.pluginSet;
116
+ if (!pluginSet) return {
117
+ cliPlugins: [],
118
+ runtimePlugins: []
119
+ };
120
+ const cliPlugins = pluginCliRegistrationsFromPluginSet(pluginSet);
121
+ const runtimePlugins = pluginRuntimeRegistrationsFromPluginSet(pluginSet);
122
+ const pluginConfig = pluginCatalogConfigFromPluginSet(pluginSet);
123
+ validatePlugins(runtimePlugins);
124
+ const previousPluginCatalogConfig = pluginCatalogRuntime.setConfig(pluginConfig);
125
+ try {
126
+ validatePluginRegistrations(pluginSet.registrations);
127
+ validatePluginEgressCredentialHooks(pluginSet.registrations);
128
+ args.validateConfiguredCommands?.(cliPlugins);
129
+ setPlugins(runtimePlugins);
130
+ return {
131
+ cliPlugins,
132
+ runtimePlugins
133
+ };
134
+ } catch (error) {
135
+ pluginCatalogRuntime.setConfig(previousPluginCatalogConfig);
136
+ throw error;
137
+ }
208
138
  }
139
+ /** Import configured app plugins and build the plugin CLI command dispatcher. */
209
140
  async function loadCliPluginCommands(pluginSet) {
210
- const resolvedPluginSet = pluginSet === void 0 ? await loadCliPluginSet() : pluginSet ?? void 0;
211
- const { cliPlugins } = await loadPluginRegistrations({
212
- pluginSet: resolvedPluginSet,
213
- validateConfiguredCommands: validateConfiguredPluginCommands
214
- });
215
- const commandNames = cliPlugins.flatMap(
216
- (plugin) => (plugin.cli?.commands ?? []).map((command) => command.name)
217
- );
218
- return {
219
- commandNames,
220
- async run(commandName, argv, io = DEFAULT_IO) {
221
- const resolved = findPluginCommand(cliPlugins, commandName);
222
- if (!resolved) {
223
- return void 0;
224
- }
225
- let exitCode = 0;
226
- const command = createPluginCommanderCommand({
227
- command: resolved.command,
228
- io,
229
- plugin: resolved.plugin,
230
- setExitCode: (nextExitCode) => {
231
- exitCode = nextExitCode;
232
- }
233
- });
234
- try {
235
- await command.parseAsync(argv, { from: "user" });
236
- } catch (error) {
237
- if (error instanceof CommanderError) {
238
- return error.exitCode;
239
- }
240
- throw error;
241
- }
242
- return exitCode;
243
- }
244
- };
141
+ const { cliPlugins } = await loadPluginRegistrations({
142
+ pluginSet: pluginSet === void 0 ? await loadCliPluginSet() : pluginSet ?? void 0,
143
+ validateConfiguredCommands: validateConfiguredPluginCommands
144
+ });
145
+ return {
146
+ commandNames: cliPlugins.flatMap((plugin) => (plugin.cli?.commands ?? []).map((command) => command.name)),
147
+ async run(commandName, argv, io = DEFAULT_IO) {
148
+ const resolved = findPluginCommand(cliPlugins, commandName);
149
+ if (!resolved) return;
150
+ let exitCode = 0;
151
+ const command = createPluginCommanderCommand({
152
+ command: resolved.command,
153
+ io,
154
+ plugin: resolved.plugin,
155
+ setExitCode: (nextExitCode) => {
156
+ exitCode = nextExitCode;
157
+ }
158
+ });
159
+ try {
160
+ await command.parseAsync(argv, { from: "user" });
161
+ } catch (error) {
162
+ if (error instanceof CommanderError) return error.exitCode;
163
+ throw error;
164
+ }
165
+ return exitCode;
166
+ }
167
+ };
245
168
  }
246
- export {
247
- loadCliPluginCommands,
248
- loadCliPluginSet
249
- };
169
+ //#endregion
170
+ export { loadCliPluginCommands, loadCliPluginSet };
@@ -0,0 +1,16 @@
1
+ //#region src/cli/run.d.ts
2
+ export declare const CLI_USAGE = "usage: junior init <dir>\n junior snapshot create\n junior check [dir]\n junior upgrade\n junior chat\n junior chat -p <message>";
3
+ interface CliHandlers {
4
+ runChat: (argv: string[]) => Promise<number>;
5
+ runInit: (dir: string) => Promise<void>;
6
+ runSnapshotCreate: () => Promise<void>;
7
+ runCheck: (dir?: string) => Promise<void>;
8
+ runUpgrade: () => Promise<void>;
9
+ runPluginCommand?: (command: string, argv: string[]) => Promise<number | undefined>;
10
+ }
11
+ interface CliIo {
12
+ error: (line: string) => void;
13
+ }
14
+ /** Dispatch CLI arguments to command handlers and return a process exit code. */
15
+ export declare function runCli(argv: string[], handlers: CliHandlers, io?: CliIo): Promise<number>;
16
+ //#endregion
package/dist/cli/run.js CHANGED
@@ -1,8 +1,52 @@
1
- import {
2
- CLI_USAGE,
3
- runCli
4
- } from "../chunk-4UO6FK4G.js";
5
- export {
6
- CLI_USAGE,
7
- runCli
8
- };
1
+ //#region src/cli/run.ts
2
+ const CLI_USAGE = "usage: junior init <dir>\n junior snapshot create\n junior check [dir]\n junior upgrade\n junior chat\n junior chat -p <message>";
3
+ const DEFAULT_IO = { error: console.error };
4
+ /** Strip Node's leading argv separator while preserving command-level flags. */
5
+ function normalizeCliArgv(argv) {
6
+ return argv[0] === "--" ? argv.slice(1) : argv;
7
+ }
8
+ /** Dispatch CLI arguments to command handlers and return a process exit code. */
9
+ async function runCli(argv, handlers, io = DEFAULT_IO) {
10
+ const [command, subcommand, ...rest] = normalizeCliArgv(argv);
11
+ if (command === "chat") return await handlers.runChat(subcommand === void 0 ? [] : [subcommand, ...rest]);
12
+ if (command === "init") {
13
+ if (!subcommand || rest.length > 0) {
14
+ io.error(CLI_USAGE);
15
+ return 1;
16
+ }
17
+ await handlers.runInit(subcommand);
18
+ return 0;
19
+ }
20
+ if (command === "snapshot" && subcommand === "create") {
21
+ if (rest.length > 0) {
22
+ io.error(CLI_USAGE);
23
+ return 1;
24
+ }
25
+ await handlers.runSnapshotCreate();
26
+ return 0;
27
+ }
28
+ if (command === "check") {
29
+ if (rest.length > 0) {
30
+ io.error(CLI_USAGE);
31
+ return 1;
32
+ }
33
+ await handlers.runCheck(subcommand);
34
+ return 0;
35
+ }
36
+ if (command === "upgrade") {
37
+ if (subcommand || rest.length > 0) {
38
+ io.error(CLI_USAGE);
39
+ return 1;
40
+ }
41
+ await handlers.runUpgrade();
42
+ return 0;
43
+ }
44
+ if (command && handlers.runPluginCommand) {
45
+ const exitCode = await handlers.runPluginCommand(command, subcommand === void 0 ? [] : [subcommand, ...rest]);
46
+ if (exitCode !== void 0) return exitCode;
47
+ }
48
+ io.error(CLI_USAGE);
49
+ return 1;
50
+ }
51
+ //#endregion
52
+ export { CLI_USAGE, runCli };
@@ -0,0 +1,4 @@
1
+ //#region src/cli/snapshot-create.d.ts
2
+ /** Resolve or create the default sandbox snapshot and report its progress. */
3
+ export declare function runSnapshotCreate(log?: (line: string) => void): Promise<void>;
4
+ //#endregion