glimmervoid 0.35.1 → 0.36.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 (38) hide show
  1. package/README.md +2 -0
  2. package/dist/bin/glimmervoid.js +17 -12
  3. package/dist/chunks/{adapters-B37wqNti.js → adapters-BVozg-Lg.js} +1 -1
  4. package/dist/chunks/{adapters-CADejSpq.js → adapters-BdnLyJjf.js} +10 -49
  5. package/dist/chunks/{agent-api-cli-CRj_FYbz.js → agent-api-cli-DIqRLvu3.js} +1 -1
  6. package/dist/chunks/{agent-api-cli-vGwstJ1j.js → agent-api-cli-d-Bgsshx.js} +3 -3
  7. package/dist/chunks/{agent-api-core-D1233u1U.js → agent-api-core-BUC9WND7.js} +2 -2
  8. package/dist/chunks/{agent-setup-cli-BTAFcckd.js → agent-setup-cli-CH7EHsAX.js} +1 -1
  9. package/dist/chunks/{config-rPbbL4nW.js → config-CuZ16F9W.js} +47 -771
  10. package/dist/chunks/config-store-LqQ7MuyV.js +4181 -0
  11. package/dist/chunks/config-store-tVmt_nfm.js +1 -0
  12. package/dist/chunks/{contracts-DjIgIuDk.js → contracts-BLZAOP57.js} +55 -6
  13. package/dist/chunks/{grok-KKgdSe-7.js → grok-Ch4-35_r.js} +3 -3
  14. package/dist/chunks/{hook-command-core-DclEoE9e.js → hook-command-core-qTNK-xMF.js} +4 -1
  15. package/dist/chunks/{hook-tools-UX2fmt81.js → hook-tools-BkxllUHE.js} +9 -16
  16. package/dist/chunks/{knowledge-graph-cli-Rj5nj87L.js → knowledge-graph-cli-DD7QvcFd.js} +1 -1
  17. package/dist/chunks/{main-C-T2Uk20.js → main-Rmo83Ow-.js} +3075 -832
  18. package/dist/chunks/{pair-cli-Dcyzv3In.js → pair-cli-DzFeAmq5.js} +2 -2
  19. package/dist/chunks/{remote-config-Dd1T-VJA.js → remote-config-CPdSF2Xi.js} +1 -1
  20. package/dist/chunks/{rtk-hook-core-BmEz2aq9.js → rtk-hook-core-VrUafGAp.js} +15 -5
  21. package/dist/chunks/rtk-resolver-B8BPgN9L.js +1 -0
  22. package/dist/chunks/{rtk-resolver-B9pzjLsM.js → rtk-resolver-C_micGrL.js} +1 -1
  23. package/dist/chunks/session-B8RhqQJe.js +986 -0
  24. package/dist/chunks/{session-routes-BYy3am9m.js → session-routes-DB5aDKsx.js} +1 -1
  25. package/dist/chunks/settings-cli-C2TY6hl-.js +484 -0
  26. package/dist/chunks/{ssh-sign-cli-DPHpT22B.js → ssh-sign-cli-C2nUwJC-.js} +2 -2
  27. package/dist/client/assets/index-BIaSyXwH.css +1 -0
  28. package/dist/client/assets/index-Ddu7M4Ad.js +259 -0
  29. package/dist/client/index.html +5 -3
  30. package/dist/server/index.js +1 -1
  31. package/dist/session/hook-tool-relay.js +3 -3
  32. package/package.json +3 -3
  33. package/dist/chunks/config-store-BeIxAZNn.js +0 -1
  34. package/dist/chunks/config-store-BtsYbNC3.js +0 -1713
  35. package/dist/chunks/rtk-resolver-SWU5VVM7.js +0 -1
  36. package/dist/chunks/session-D6xXN0UU.js +0 -232
  37. package/dist/client/assets/index-CUxRHbCS.js +0 -254
  38. package/dist/client/assets/index-DE2GUmqs.css +0 -1
@@ -1 +0,0 @@
1
- export { t as getRtkPath } from "./rtk-resolver-B9pzjLsM.js";
@@ -1,232 +0,0 @@
1
- import { z } from "zod";
2
- //#region shared/states.ts
3
- var STATES = Object.freeze({
4
- DORMANT: "DORMANT",
5
- INITIALIZING: "INITIALIZING",
6
- STARTING: "STARTING",
7
- RUNNING: "RUNNING",
8
- WAITING: "WAITING",
9
- IDLE: "IDLE",
10
- COMPLETE: "COMPLETE",
11
- DONE: "DONE",
12
- FAILED: "FAILED"
13
- });
14
- Object.freeze({
15
- [STATES.DORMANT]: "Dormant",
16
- [STATES.INITIALIZING]: "Preparing",
17
- [STATES.STARTING]: "Starting",
18
- [STATES.RUNNING]: "Working",
19
- [STATES.WAITING]: "Needs Input",
20
- [STATES.IDLE]: "Idle",
21
- [STATES.COMPLETE]: "Complete",
22
- [STATES.DONE]: "Exited",
23
- [STATES.FAILED]: "Failed"
24
- });
25
- Object.freeze({
26
- [STATES.DORMANT]: "○",
27
- [STATES.INITIALIZING]: "◌",
28
- [STATES.STARTING]: "◐",
29
- [STATES.RUNNING]: "●",
30
- [STATES.WAITING]: "◆",
31
- [STATES.IDLE]: "◍",
32
- [STATES.FAILED]: "▲",
33
- [STATES.DONE]: "■",
34
- [STATES.COMPLETE]: "◇"
35
- });
36
- var KILLABLE_STATES = Object.freeze([
37
- STATES.INITIALIZING,
38
- STATES.STARTING,
39
- STATES.RUNNING,
40
- STATES.WAITING,
41
- STATES.IDLE,
42
- STATES.COMPLETE
43
- ]);
44
- var RESTARTABLE_STATES = Object.freeze([STATES.DONE, STATES.FAILED]);
45
- var MERGEABLE_LIVE_STATES = Object.freeze([
46
- STATES.WAITING,
47
- STATES.IDLE,
48
- STATES.COMPLETE
49
- ]);
50
- var DETAIL_FIELD_BY_TOOL = Object.freeze({
51
- Bash: "command",
52
- Read: "file_path",
53
- Edit: "file_path",
54
- MultiEdit: "file_path",
55
- Write: "file_path",
56
- NotebookEdit: "notebook_path",
57
- Grep: "pattern",
58
- Glob: "pattern",
59
- WebFetch: "url",
60
- WebSearch: "query",
61
- Task: "description",
62
- Agent: "description",
63
- Skill: "skill"
64
- });
65
- function firstDetailLine(text) {
66
- const line = text.split(/\r?\n/, 1)[0]?.trim() ?? "";
67
- if (line.length <= 160) return line;
68
- return `${line.slice(0, 157)}...`;
69
- }
70
- function toolDetailFieldValue(toolName, toolInput) {
71
- const field = DETAIL_FIELD_BY_TOOL[toolName];
72
- if (!field) return null;
73
- if (!toolInput || typeof toolInput !== "object" || Array.isArray(toolInput)) return null;
74
- const value = toolInput[field];
75
- return typeof value === "string" ? value : null;
76
- }
77
- function toolDetailLine(toolName, toolInput) {
78
- const fieldValue = toolDetailFieldValue(toolName, toolInput);
79
- return fieldValue === null ? "" : firstDetailLine(fieldValue);
80
- }
81
- var TASK_TITLE_CONTROL_CHARACTERS = /[\x00-\x1f\x7f-\x9f]/;
82
- var PROMPT_DETAIL_HIDDEN_CHARACTERS = new RegExp(`${TASK_TITLE_CONTROL_CHARACTERS.source}|[\\p{Cf}\\u2028\\u2029]`, "u");
83
- var TaskTitle = z.string().refine((title) => !TASK_TITLE_CONTROL_CHARACTERS.test(title)).trim().max(120);
84
- var RefinedTaskTitle = z.object({ title: z.string().nullable() }).strict();
85
- var SessionState = z.enum(STATES);
86
- var PendingWakeup = z.object({
87
- at: z.number().finite().nullable(),
88
- kind: z.string(),
89
- reason: z.string().nullable()
90
- }).passthrough();
91
- var ASK_USER_QUESTION_TOOL_NAME = "AskUserQuestion";
92
- var PROMPT_QUESTION_MAX_CHARS = 300;
93
- var PROMPT_QUESTION_OPTION_MAX_CHARS = 80;
94
- var hasNoHiddenCharacters = (text) => !PROMPT_DETAIL_HIDDEN_CHARACTERS.test(text);
95
- var PendingPromptQuestion = z.object({
96
- text: z.string().min(1).max(PROMPT_QUESTION_MAX_CHARS).refine(hasNoHiddenCharacters),
97
- options: z.array(z.string().min(1).max(PROMPT_QUESTION_OPTION_MAX_CHARS).refine(hasNoHiddenCharacters)).min(1).max(8),
98
- multiSelect: z.boolean()
99
- });
100
- var PendingPromptDetail = z.object({
101
- toolName: z.string().max(160),
102
- summary: z.string().max(160),
103
- isComplete: z.boolean(),
104
- question: PendingPromptQuestion.nullable().optional()
105
- });
106
- var SessionSnapshot = z.object({
107
- id: z.string(),
108
- name: z.string(),
109
- taskTitle: TaskTitle.nullable().default(null),
110
- taskTitleIsCustom: z.boolean().default(false),
111
- path: z.string(),
112
- agent: z.string(),
113
- state: SessionState,
114
- stateSince: z.number(),
115
- sleeping: z.boolean(),
116
- dangerouslySkipPermissions: z.boolean(),
117
- saneYolo: z.boolean().default(false),
118
- ephemeral: z.boolean(),
119
- isWorktree: z.boolean(),
120
- isWorkspace: z.boolean().default(false),
121
- resumeSessionId: z.string().nullable(),
122
- activeAgents: z.number().int().nonnegative(),
123
- awaitingBackgroundTasks: z.boolean(),
124
- isCompacting: z.boolean().default(false),
125
- hasEndedTurn: z.boolean().default(false),
126
- pendingWakeup: PendingWakeup.nullable(),
127
- pendingPromptKind: z.string().nullable(),
128
- pendingPromptDetail: PendingPromptDetail.nullable().default(null),
129
- hasPlan: z.boolean().default(false),
130
- mergeStatus: z.string().nullable(),
131
- mergeReason: z.string().nullable(),
132
- worktreeNotice: z.string().nullable(),
133
- effectiveBase: z.string().nullable(),
134
- auditLog: z.array(z.unknown())
135
- }).passthrough();
136
- function isSamePromptQuestion(left, right) {
137
- if (!left || !right) return !left && !right;
138
- return left.text === right.text && left.multiSelect === right.multiSelect && left.options.length === right.options.length && left.options.every((option, index) => option === right.options[index]);
139
- }
140
- var AGENT_URL_ENV = "GLIMMERVOID_AGENT_URL";
141
- var SIGN_URL_ENV = "GLIMMERVOID_SIGN_URL";
142
- var SSH_SIGN_BODY_CAP_BYTES = 1048576;
143
- var SshSignRequest = z.object({
144
- namespace: z.literal("git", { error: "namespace must be git" }),
145
- publicKey: z.string({ error: "publicKey must be a string" }).min(1, { error: "publicKey must not be empty" }).max(16384, { error: "publicKey must be at most 16384 characters" }),
146
- payload: z.base64({ error: "payload must be base64" })
147
- }).strict();
148
- var SshSignReply = z.union([z.object({
149
- ok: z.literal(true),
150
- signature: z.string()
151
- }).strict(), z.object({
152
- ok: z.literal(false),
153
- error: z.string()
154
- }).strict()]);
155
- var AGENT_API_VERBS = [
156
- "spawn",
157
- "attention",
158
- "board",
159
- "dispatch",
160
- "reopen",
161
- "cancel",
162
- "push",
163
- "edit",
164
- "limits"
165
- ];
166
- var ORCHESTRATOR_AGENT_VERBS = [
167
- "dispatch",
168
- "reopen",
169
- "cancel"
170
- ];
171
- var AgentSpawnRequest = z.object({
172
- prompt: z.string({ error: "prompt must be a string" }).min(1, { error: "prompt must not be empty" }).max(2e4, { error: "prompt must be at most 20000 characters" }).refine((prompt) => !prompt.trimStart().startsWith("-"), { message: "prompt must not start with a dash, which the agent CLI would read as an option" }),
173
- name: z.string({ error: "name must be a string" }).min(1, { error: "name must not be empty" }).max(200, { error: "name must be at most 200 characters" }).optional(),
174
- agent: z.string({ error: "agent must be a string" }).min(1, { error: "agent must not be empty" }).max(40, { error: "agent must be at most 40 characters" }).optional()
175
- }).strict();
176
- var AgentAttentionRequest = z.object({ note: z.string({ error: "note must be a string" }).min(1, { error: "note must not be empty" }).max(500, { error: "note must be at most 500 characters" }) }).strict();
177
- z.union([z.object({
178
- ok: z.literal(true),
179
- pending: z.boolean()
180
- }).strict(), z.object({
181
- ok: z.literal(false),
182
- error: z.string()
183
- }).strict()]);
184
- z.object({
185
- id: SessionSnapshot.shape.id,
186
- name: SessionSnapshot.shape.name,
187
- agent: SessionSnapshot.shape.agent,
188
- state: SessionSnapshot.shape.state,
189
- ephemeral: SessionSnapshot.shape.ephemeral
190
- }).strict();
191
- var SESSION_DOC_BODY_CAP_BYTES = 262144;
192
- var SESSION_DOC_PATH_MAX_CHARS = 4096;
193
- var AgentEditRequest = z.object({ path: z.string({ error: "path must be a string" }).min(1, { error: "path must not be empty" }).max(SESSION_DOC_PATH_MAX_CHARS, { error: `path must be at most ${SESSION_DOC_PATH_MAX_CHARS} characters` }) }).strict();
194
- var SessionDoc = z.object({
195
- path: z.string(),
196
- name: z.string(),
197
- surfacedAt: z.number().finite()
198
- }).strict();
199
- var SESSION_COMMANDS = [
200
- "push",
201
- "spawn",
202
- "attention",
203
- "board",
204
- "edit"
205
- ];
206
- var AgentLimitsReply = z.object({
207
- commands: z.array(z.object({
208
- name: z.enum(SESSION_COMMANDS),
209
- answers: z.boolean(),
210
- reason: z.string().optional()
211
- }).strict()),
212
- sandboxed: z.boolean(),
213
- deadEnds: z.array(z.object({
214
- blocked: z.string(),
215
- route: z.string()
216
- }).strict())
217
- }).strict().extend({ ok: z.literal(true) }).strict();
218
- var AgentDispatchRequest = z.object({
219
- workId: z.string().regex(/^wrk-[0-9a-f]{16}$/).optional(),
220
- readyIntent: z.string().regex(/^wrk-[0-9a-f]{16}$/).optional()
221
- }).strict().refine((request) => Boolean(request.workId) !== Boolean(request.readyIntent), "Expected exactly one work id or ready intent");
222
- var AgentTicketRequest = z.object({ workId: z.string({ error: "workId must be a string" }).regex(/^wrk-[0-9a-f]{16}$/, { error: "workId must match wrk-[0-9a-f]{16}" }) }).strict();
223
- z.discriminatedUnion("ok", [z.object({
224
- ok: z.literal(true),
225
- workId: z.string(),
226
- state: z.enum(["open", "cancelled"])
227
- }), z.object({
228
- ok: z.literal(false),
229
- reason: z.string()
230
- })]);
231
- //#endregion
232
- export { toolDetailFieldValue as A, SessionState as C, TaskTitle as D, TASK_TITLE_CONTROL_CHARACTERS as E, STATES as F, KILLABLE_STATES as M, MERGEABLE_LIVE_STATES as N, isSamePromptQuestion as O, RESTARTABLE_STATES as P, SessionSnapshot as S, SshSignRequest as T, SESSION_DOC_BODY_CAP_BYTES as _, AgentDispatchRequest as a, SSH_SIGN_BODY_CAP_BYTES as b, AgentSpawnRequest as c, PROMPT_DETAIL_HIDDEN_CHARACTERS as d, PendingPromptDetail as f, SESSION_COMMANDS as g, RefinedTaskTitle as h, AgentAttentionRequest as i, toolDetailLine as j, firstDetailLine as k, AgentTicketRequest as l, PendingWakeup as m, AGENT_URL_ENV as n, AgentEditRequest as o, PendingPromptQuestion as p, ASK_USER_QUESTION_TOOL_NAME as r, AgentLimitsReply as s, AGENT_API_VERBS as t, ORCHESTRATOR_AGENT_VERBS as u, SESSION_DOC_PATH_MAX_CHARS as v, SshSignReply as w, SessionDoc as x, SIGN_URL_ENV as y };