@cmodjs/core 0.2.3 → 1.0.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.
- package/docs/commands.md +58 -10
- package/docs/dependencies.md +12 -12
- package/docs/hooks.md +41 -28
- package/docs/index.md +29 -25
- package/docs/install-steps.md +9 -7
- package/docs/jobs.md +59 -111
- package/docs/mod.md +200 -174
- package/docs/options.md +2 -2
- package/docs/permissions.md +27 -16
- package/docs/session.md +248 -0
- package/docs/state.md +11 -7
- package/docs/testing.md +66 -23
- package/docs/ui.md +108 -76
- package/jobs/check.d.ts.map +1 -1
- package/jobs/check.js +5 -2
- package/jobs/context.d.ts +7 -8
- package/jobs/context.d.ts.map +1 -1
- package/jobs/context.js +23 -73
- package/jobs/permissions/decide-permission.d.ts +5 -3
- package/jobs/permissions/decide-permission.d.ts.map +1 -1
- package/jobs/permissions/decide-permission.js +6 -4
- package/jobs/permissions/find-project-scope.d.ts +1 -1
- package/jobs/permissions/find-project-scope.d.ts.map +1 -1
- package/jobs/permissions/find-project-scope.js +8 -11
- package/jobs/permissions/match-target.d.ts +2 -2
- package/jobs/permissions/match-target.d.ts.map +1 -1
- package/jobs/permissions.d.ts +1 -1
- package/jobs/permissions.d.ts.map +1 -1
- package/jobs/permissions.js +6 -4
- package/jobs/program.d.ts.map +1 -1
- package/jobs/program.js +8 -3
- package/jobs/prompt.d.ts +4 -2
- package/jobs/prompt.d.ts.map +1 -1
- package/jobs/prompt.js +16 -15
- package/jobs/schedule.d.ts +2 -2
- package/jobs/schedule.d.ts.map +1 -1
- package/jobs/schedule.js +9 -9
- package/jobs/slash-command.d.ts +4 -4
- package/jobs/slash-command.d.ts.map +1 -1
- package/jobs/slash-command.js +14 -9
- package/jobs/status-line.d.ts +1 -11
- package/jobs/status-line.d.ts.map +1 -1
- package/jobs/status-line.js +8 -12
- package/jobs/tool.d.ts +2 -2
- package/jobs/tool.d.ts.map +1 -1
- package/jobs/tool.js +15 -9
- package/mod.d.ts +154 -75
- package/mod.d.ts.map +1 -1
- package/mod.js +94 -3
- package/options.d.ts +2 -2
- package/options.js +19 -19
- package/package.json +3 -3
- package/records.d.ts +10 -8
- package/records.d.ts.map +1 -1
- package/records.js +28 -17
- package/register.d.ts.map +1 -1
- package/register.js +18 -6
- package/runtime/announce.d.ts +18 -0
- package/runtime/announce.d.ts.map +1 -0
- package/runtime/announce.js +66 -0
- package/runtime/bound.d.ts +4 -0
- package/runtime/bound.d.ts.map +1 -0
- package/runtime/bound.js +9 -0
- package/runtime/claude.d.ts +3 -3
- package/runtime/claude.d.ts.map +1 -1
- package/runtime/conversations.d.ts +16 -0
- package/runtime/conversations.d.ts.map +1 -0
- package/runtime/conversations.js +291 -0
- package/runtime/deadline.d.ts +0 -1
- package/runtime/deadline.d.ts.map +1 -1
- package/runtime/deadline.js +1 -1
- package/runtime/dependencies.d.ts +2 -0
- package/runtime/dependencies.d.ts.map +1 -1
- package/runtime/dependencies.js +9 -0
- package/runtime/engine.d.ts +17 -0
- package/runtime/engine.d.ts.map +1 -0
- package/runtime/engine.js +10 -0
- package/runtime/grants.d.ts +4 -0
- package/runtime/grants.d.ts.map +1 -1
- package/runtime/grants.js +63 -33
- package/runtime/hooks.d.ts +5 -4
- package/runtime/hooks.d.ts.map +1 -1
- package/runtime/hooks.js +10 -5
- package/runtime/installer.d.ts.map +1 -1
- package/runtime/installer.js +11 -9
- package/runtime/lifecycle.d.ts +3 -1
- package/runtime/lifecycle.d.ts.map +1 -1
- package/runtime/lifecycle.js +317 -186
- package/runtime/metadata.d.ts +3 -1
- package/runtime/metadata.d.ts.map +1 -1
- package/runtime/metadata.js +21 -11
- package/runtime/options.d.ts +3 -1
- package/runtime/options.d.ts.map +1 -1
- package/runtime/options.js +4 -4
- package/runtime/programs.d.ts +8 -0
- package/runtime/programs.d.ts.map +1 -1
- package/runtime/programs.js +39 -1
- package/runtime/router.d.ts +2 -1
- package/runtime/router.d.ts.map +1 -1
- package/runtime/router.js +11 -3
- package/runtime/sessions.d.ts +36 -0
- package/runtime/sessions.d.ts.map +1 -0
- package/runtime/sessions.js +235 -0
- package/runtime/state.d.ts +6 -2
- package/runtime/state.d.ts.map +1 -1
- package/runtime/state.js +46 -13
- package/runtime/toaster.d.ts +31 -0
- package/runtime/toaster.d.ts.map +1 -0
- package/runtime/toaster.js +176 -0
- package/runtime/ui.d.ts +6 -17
- package/runtime/ui.d.ts.map +1 -1
- package/runtime/ui.js +36 -112
- package/session/context/context.d.ts +10 -0
- package/session/context/context.d.ts.map +1 -0
- package/session/context/context.js +2 -0
- package/session/context/turn/message/document.d.ts +7 -0
- package/session/context/turn/message/document.d.ts.map +1 -0
- package/session/context/turn/message/document.js +1 -0
- package/session/context/turn/message/message.d.ts +54 -0
- package/session/context/turn/message/message.d.ts.map +1 -0
- package/session/context/turn/message/message.js +137 -0
- package/session/context/turn/message/note.d.ts +8 -0
- package/session/context/turn/message/note.d.ts.map +1 -0
- package/session/context/turn/message/note.js +1 -0
- package/session/context/turn/message/notice.d.ts +6 -0
- package/session/context/turn/message/notice.d.ts.map +1 -0
- package/session/context/turn/message/notice.js +1 -0
- package/session/context/turn/message/prompt.d.ts +8 -0
- package/session/context/turn/message/prompt.d.ts.map +1 -0
- package/session/context/turn/message/prompt.js +1 -0
- package/session/context/turn/message/reply.d.ts +6 -0
- package/session/context/turn/message/reply.d.ts.map +1 -0
- package/session/context/turn/message/reply.js +1 -0
- package/session/context/turn/message/sender.d.ts +14 -0
- package/session/context/turn/message/sender.d.ts.map +1 -0
- package/session/context/turn/message/sender.js +30 -0
- package/session/context/turn/message/skill.d.ts +7 -0
- package/session/context/turn/message/skill.d.ts.map +1 -0
- package/session/context/turn/message/skill.js +1 -0
- package/session/context/turn/message/tool-call.d.ts +9 -0
- package/session/context/turn/message/tool-call.d.ts.map +1 -0
- package/session/context/turn/message/tool-call.js +1 -0
- package/session/context/turn/message/tool-result.d.ts +8 -0
- package/session/context/turn/message/tool-result.d.ts.map +1 -0
- package/session/context/turn/message/tool-result.js +1 -0
- package/session/context/turn/turn.d.ts +12 -0
- package/session/context/turn/turn.d.ts.map +1 -0
- package/session/context/turn/turn.js +2 -0
- package/session/conversation.d.ts +64 -0
- package/session/conversation.d.ts.map +1 -0
- package/session/conversation.js +123 -0
- package/session/goal/goal.d.ts +10 -0
- package/session/goal/goal.d.ts.map +1 -0
- package/session/goal/goal.js +1 -0
- package/session/goal/task.d.ts +16 -0
- package/session/goal/task.d.ts.map +1 -0
- package/session/goal/task.js +3 -0
- package/session/session.d.ts +99 -0
- package/session/session.d.ts.map +1 -0
- package/session/session.js +1 -0
- package/src/jobs/check.ts +7 -4
- package/src/jobs/context.ts +24 -82
- package/src/jobs/permissions/decide-permission.ts +10 -8
- package/src/jobs/permissions/find-project-scope.ts +8 -14
- package/src/jobs/permissions/match-target.ts +3 -3
- package/src/jobs/permissions.ts +8 -6
- package/src/jobs/program.ts +7 -3
- package/src/jobs/prompt.ts +21 -24
- package/src/jobs/schedule.ts +14 -14
- package/src/jobs/slash-command.ts +20 -14
- package/src/jobs/status-line.ts +9 -21
- package/src/jobs/tool.ts +17 -11
- package/src/mod.ts +209 -97
- package/src/options.ts +22 -22
- package/src/records.ts +35 -23
- package/src/register.ts +18 -6
- package/src/runtime/announce.ts +74 -0
- package/src/runtime/bound.ts +12 -0
- package/src/runtime/claude.ts +5 -3
- package/src/runtime/conversations.ts +302 -0
- package/src/runtime/deadline.ts +2 -2
- package/src/runtime/dependencies.ts +12 -0
- package/src/runtime/engine.ts +22 -0
- package/src/runtime/grants.ts +66 -31
- package/src/runtime/hooks.ts +19 -10
- package/src/runtime/installer.ts +10 -9
- package/src/runtime/lifecycle.ts +313 -181
- package/src/runtime/metadata.ts +33 -11
- package/src/runtime/options.ts +19 -4
- package/src/runtime/programs.ts +40 -1
- package/src/runtime/router.ts +11 -4
- package/src/runtime/sessions.ts +242 -0
- package/src/runtime/state.ts +50 -14
- package/src/runtime/toaster.ts +218 -0
- package/src/runtime/ui.ts +42 -139
- package/src/session/context/context.ts +12 -0
- package/src/session/context/turn/message/document.ts +8 -0
- package/src/session/context/turn/message/message.ts +165 -0
- package/src/session/context/turn/message/note.ts +9 -0
- package/src/session/context/turn/message/notice.ts +7 -0
- package/src/session/context/turn/message/prompt.ts +9 -0
- package/src/session/context/turn/message/reply.ts +7 -0
- package/src/session/context/turn/message/sender.ts +38 -0
- package/src/session/context/turn/message/skill.ts +8 -0
- package/src/session/context/turn/message/tool-call.ts +10 -0
- package/src/session/context/turn/message/tool-result.ts +9 -0
- package/src/session/context/turn/turn.ts +14 -0
- package/src/session/conversation.ts +169 -0
- package/src/session/goal/goal.ts +9 -0
- package/src/session/goal/task.ts +19 -0
- package/src/session/session.ts +94 -0
- package/src/testing/fake-claude.ts +23 -18
- package/src/testing/fake-elements.ts +3 -2
- package/src/testing/fake-files.ts +1 -1
- package/src/testing/fake-sessions.ts +203 -0
- package/src/testing.ts +112 -33
- package/src/ui/components.ts +3 -3
- package/src/ui/elements.ts +22 -8
- package/src/ui/markdown.ts +22 -26
- package/src/ui/places.ts +49 -0
- package/src/utils/call-effects.ts +3 -3
- package/src/utils/changelog.ts +32 -0
- package/src/utils/matcher.ts +37 -0
- package/src/utils/metadata.ts +17 -15
- package/src/utils/parse-shell.ts +24 -16
- package/src/utils/paths.ts +15 -1
- package/src/utils/text.ts +4 -0
- package/testing/fake-claude.d.ts +4 -2
- package/testing/fake-claude.d.ts.map +1 -1
- package/testing/fake-claude.js +18 -12
- package/testing/fake-elements.js +4 -2
- package/testing/fake-files.js +1 -1
- package/testing/fake-sessions.d.ts +74 -0
- package/testing/fake-sessions.d.ts.map +1 -0
- package/testing/fake-sessions.js +170 -0
- package/testing.d.ts +33 -13
- package/testing.d.ts.map +1 -1
- package/testing.js +92 -21
- package/ui/components.d.ts +2 -3
- package/ui/components.d.ts.map +1 -1
- package/ui/components.js +3 -3
- package/ui/elements.d.ts.map +1 -1
- package/ui/elements.js +19 -9
- package/ui/markdown.d.ts +35 -33
- package/ui/markdown.d.ts.map +1 -1
- package/ui/markdown.js +14 -16
- package/ui/places.d.ts +43 -0
- package/ui/places.d.ts.map +1 -0
- package/ui/places.js +31 -0
- package/utils/call-effects.d.ts +1 -1
- package/utils/call-effects.d.ts.map +1 -1
- package/utils/call-effects.js +2 -2
- package/utils/changelog.d.ts +9 -0
- package/utils/changelog.d.ts.map +1 -0
- package/utils/changelog.js +29 -0
- package/utils/matcher.d.ts +13 -0
- package/utils/matcher.d.ts.map +1 -0
- package/utils/matcher.js +32 -0
- package/utils/metadata.d.ts +3 -3
- package/utils/metadata.js +18 -14
- package/utils/parse-shell.d.ts +1 -0
- package/utils/parse-shell.d.ts.map +1 -1
- package/utils/parse-shell.js +22 -13
- package/utils/paths.d.ts +2 -0
- package/utils/paths.d.ts.map +1 -1
- package/utils/paths.js +13 -1
- package/utils/text.d.ts +1 -0
- package/utils/text.d.ts.map +1 -1
- package/utils/text.js +3 -0
- package/src/ui/slots.ts +0 -36
- package/ui/slots.d.ts +0 -208
- package/ui/slots.d.ts.map +0 -1
- package/ui/slots.js +0 -19
package/records.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"records.d.ts","sourceRoot":"","sources":["src/records.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CACvC,CAAA;AAED,MAAM,MAAM,KAAK,GAAG;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACvC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAChC,CAAA;AAED,eAAO,MAAM,eAAe,YAAI,SAAS,EAAE,KAAK,EAAE,OAAO,CAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"records.d.ts","sourceRoot":"","sources":["src/records.ts"],"names":[],"mappings":"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"}
|
package/records.js
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { listed, messageOf } from './utils/text.js';
|
|
2
|
-
export const listPermissions = ['network', 'run', 'files'];
|
|
3
|
-
export const flagPermissions = ['conversation', 'prompt', 'model', '
|
|
2
|
+
export const listPermissions = ['network', 'run', 'files', 'config'];
|
|
3
|
+
export const flagPermissions = ['conversation', 'prompt', 'model', 'tasks', 'tools', 'approve'];
|
|
4
4
|
const permissionNames = [...listPermissions, ...flagPermissions];
|
|
5
5
|
const hostName = /^[A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])?(\.[A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])?)*$/;
|
|
6
6
|
const programName = /^[A-Za-z0-9][A-Za-z0-9._+-]*$/;
|
|
7
|
+
const settingName = /^[A-Za-z][A-Za-z0-9]*$/;
|
|
8
|
+
const listItemHint = {
|
|
9
|
+
network: 'a host alone, such as "api.github.com", or a socket path, such as "/var/run/docker.sock"',
|
|
10
|
+
run: 'a program\'s command, such as "gh"',
|
|
11
|
+
files: 'a path that starts with ~/ or /, such as "~/.zshrc"',
|
|
12
|
+
config: 'a Claude Code setting\'s name, such as "cleanupPeriodDays"',
|
|
13
|
+
};
|
|
7
14
|
export const pluginName = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;
|
|
8
15
|
export function storeFolder(env) {
|
|
9
16
|
const dataHome = env['XDG_DATA_HOME'];
|
|
@@ -129,14 +136,14 @@ function readPermissions(steps) {
|
|
|
129
136
|
items.push('run:*');
|
|
130
137
|
continue;
|
|
131
138
|
}
|
|
132
|
-
const example =
|
|
139
|
+
const example = { network: '["api.github.com"]', run: '["gh"], or "*" for any program', files: '["~/.zshrc"]', config: '["cleanupPeriodDays"]' }[name];
|
|
133
140
|
if (!Array.isArray(value) || value.length === 0 || !value.every((each) => typeof each === 'string'))
|
|
134
141
|
throw new Error(`${at} sets "${name}" to ${JSON.stringify(value)}. Write a list, such as "${name}": ${example}.`);
|
|
135
142
|
for (const each of value) {
|
|
136
143
|
const isPath = /^(~\/|\/)/.test(each) && !each.split('/').includes('..');
|
|
137
|
-
const isValid =
|
|
138
|
-
if (
|
|
139
|
-
throw new Error(`${at} lists "${each}" under "${name}". Write ${name
|
|
144
|
+
const isValid = { network: hostName.test(each) || isPath, run: programName.test(each), files: isPath, config: settingName.test(each) }[name];
|
|
145
|
+
if (isValid !== true)
|
|
146
|
+
throw new Error(`${at} lists "${each}" under "${name}". Write ${listItemHint[name]}.`);
|
|
140
147
|
items.push(`${name}:${each}`);
|
|
141
148
|
}
|
|
142
149
|
}
|
|
@@ -153,17 +160,17 @@ export function permissionWords(item) {
|
|
|
153
160
|
case 'files':
|
|
154
161
|
return `Change ${target}`;
|
|
155
162
|
case 'conversation':
|
|
156
|
-
return 'Read
|
|
163
|
+
return 'Read your Claude Code conversations';
|
|
157
164
|
case 'prompt':
|
|
158
165
|
return 'Add text Claude reads and start turns';
|
|
159
166
|
case 'model':
|
|
160
167
|
return 'Ask a model, which uses your plan';
|
|
161
|
-
case '
|
|
162
|
-
return 'Start
|
|
168
|
+
case 'tasks':
|
|
169
|
+
return 'Start tasks that work beside Claude';
|
|
163
170
|
case 'tools':
|
|
164
171
|
return "Use and change Claude's tool calls";
|
|
165
172
|
case 'config':
|
|
166
|
-
return
|
|
173
|
+
return `Change ${target} in your Claude Code settings`;
|
|
167
174
|
case 'approve':
|
|
168
175
|
return "Approve Claude's tool calls for you";
|
|
169
176
|
default:
|
|
@@ -171,6 +178,7 @@ export function permissionWords(item) {
|
|
|
171
178
|
}
|
|
172
179
|
}
|
|
173
180
|
export const settingsPagesMethod = 'cmod:settingsPages';
|
|
181
|
+
export const changelogPage = 'changelog';
|
|
174
182
|
export const openPageMethod = 'cmod:openPage';
|
|
175
183
|
export const pendingStepsMethod = 'cmod:pendingSteps';
|
|
176
184
|
export const finishStepsMethod = 'cmod:finishSteps';
|
|
@@ -212,7 +220,10 @@ function readKeys(keys) {
|
|
|
212
220
|
}
|
|
213
221
|
return { keys: commands };
|
|
214
222
|
}
|
|
223
|
+
export const coreVersion = '1.0.0';
|
|
215
224
|
export function oldestCmodFor(steps) {
|
|
225
|
+
if (steps.permissions?.some((item) => item === 'tasks' || item.startsWith('config:')) === true)
|
|
226
|
+
return '1.0.0';
|
|
216
227
|
if (steps.permissions !== undefined)
|
|
217
228
|
return '0.2.0';
|
|
218
229
|
return Object.keys(steps.keys ?? {}).length > 0 ? '0.1.12' : '0.0.0';
|
|
@@ -279,7 +290,7 @@ export async function scriptsSha256(steps, files) {
|
|
|
279
290
|
return [...new Uint8Array(digest)].map((byte) => byte.toString(16).padStart(2, '0')).join('');
|
|
280
291
|
}
|
|
281
292
|
export function formatEvent(event) {
|
|
282
|
-
switch (event.
|
|
293
|
+
switch (event.type) {
|
|
283
294
|
case 'progress':
|
|
284
295
|
return `progress ${event.done} ${event.total}${event.label === '' ? '' : ` ${event.label}`}`;
|
|
285
296
|
case 'log':
|
|
@@ -297,22 +308,22 @@ export function formatEvent(event) {
|
|
|
297
308
|
export function parseEvent(line) {
|
|
298
309
|
const progress = /^progress (\d+) (\d+)(?: (.*))?$/.exec(line);
|
|
299
310
|
if (progress !== null)
|
|
300
|
-
return {
|
|
311
|
+
return { type: 'progress', done: Number(progress[1]), total: Number(progress[2]), label: progress[3] ?? '' };
|
|
301
312
|
const consent = /^needs-consent (\S+)\t([^\t]*)\t([^\t]*)(?:\t(.*))?$/.exec(line);
|
|
302
313
|
if (consent !== null) {
|
|
303
314
|
const [keys = '', ...permissions] = (consent[4] ?? '').split('\t');
|
|
304
|
-
return {
|
|
315
|
+
return { type: 'needs-consent', sha256: consent[1], install: consent[2], uninstall: consent[3], keys, permissions: permissions.filter((item) => item !== '') };
|
|
305
316
|
}
|
|
306
317
|
const done = /^done (\S+)(?: (\S+))?$/.exec(line);
|
|
307
318
|
if (done !== null)
|
|
308
|
-
return {
|
|
319
|
+
return { type: 'done', name: done[1], ...(done[2] === undefined ? {} : { version: done[2] }) };
|
|
309
320
|
const missing = /^missing (\S+)$/.exec(line);
|
|
310
321
|
if (missing !== null)
|
|
311
|
-
return {
|
|
322
|
+
return { type: 'missing', name: missing[1] };
|
|
312
323
|
const failed = /^failed (-?\d+)(?:\t(.*))?$/.exec(line);
|
|
313
324
|
if (failed !== null)
|
|
314
|
-
return {
|
|
315
|
-
return {
|
|
325
|
+
return { type: 'failed', code: Number(failed[1]), message: failed[2] ?? '' };
|
|
326
|
+
return { type: 'log', text: line.replace(/^log /, '') };
|
|
316
327
|
}
|
|
317
328
|
export function isAtLeast(version, minimum) {
|
|
318
329
|
const parts = version.split('.').map(Number);
|
package/register.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["src/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoD,EAAE,EAAE,aAAa,EAAgB,MAAM,aAAa,CAAA;AACpH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"register.d.ts","sourceRoot":"","sources":["src/register.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoD,EAAE,EAAE,aAAa,EAAgB,MAAM,aAAa,CAAA;AACpH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAY3C,wBAAgB,aAAa,IAAI,aAAa,CAAC,MAAM,CAAC,GAAG,SAAS,CAEjE;AAkFD,wBAAgB,WAAW,CAAC,KAAK,SAAS,MAAM,EAAE,QAAQ,SAAS,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI,CAoCzK;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,EAAE,GAAG,IAAI,CAIzD"}
|
package/register.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { cmodPluginName } from './runtime/dependencies.js';
|
|
1
2
|
import { createLifecycle, readPlugin } from './runtime/lifecycle.js';
|
|
2
3
|
let lifecycle;
|
|
3
4
|
let checksPermissions = false;
|
|
@@ -9,7 +10,6 @@ async function startMod($, eventInput, passOn) {
|
|
|
9
10
|
const claude = {
|
|
10
11
|
plugin: { name: $.plugin.name, root: $.plugin.root },
|
|
11
12
|
ui: {
|
|
12
|
-
toast: (text, options) => $.ui.toast(text, options),
|
|
13
13
|
status: (text) => $.ui.status(text),
|
|
14
14
|
log: (text, options) => $.ui.log(text, options),
|
|
15
15
|
notice: (toolUseId, text) => $.ui.notice(toolUseId, text),
|
|
@@ -19,6 +19,7 @@ async function startMod($, eventInput, passOn) {
|
|
|
19
19
|
close: (pane) => $.ui.close(pane),
|
|
20
20
|
panes: () => $.ui.panes(),
|
|
21
21
|
scroll: (args) => $.ui.scroll(args),
|
|
22
|
+
copy: (args) => $.ui.copy(args),
|
|
22
23
|
resolve: (render) => $.ui.resolve(render),
|
|
23
24
|
},
|
|
24
25
|
process: {
|
|
@@ -34,7 +35,7 @@ async function startMod($, eventInput, passOn) {
|
|
|
34
35
|
},
|
|
35
36
|
http: { fetch: (url, init) => $.http.fetch(url, init) },
|
|
36
37
|
settings: { read: (args) => $.settings.read(args) },
|
|
37
|
-
config: { list: () => $.config.list()
|
|
38
|
+
config: { list: () => $.config.list() },
|
|
38
39
|
store: {
|
|
39
40
|
get: (key) => $.store.get(key),
|
|
40
41
|
set: (key, value) => $.store.set(key, value),
|
|
@@ -55,11 +56,12 @@ async function startMod($, eventInput, passOn) {
|
|
|
55
56
|
surfaces: () => $.session.surfaces(),
|
|
56
57
|
messages: ((args) => (args === undefined ? $.session.messages() : $.session.messages(args))),
|
|
57
58
|
append: (args) => $.session.append(args),
|
|
59
|
+
send: (args) => $.session.send(args),
|
|
58
60
|
},
|
|
59
61
|
prompt: { submit: (args) => $.prompt.submit(args) },
|
|
60
62
|
model: { complete: (request, options) => $.model.complete(request, options) },
|
|
61
63
|
command: { register: (command) => $.command.register(command) },
|
|
62
|
-
tool: { register: (tool) => $.tool.register(tool), call: (
|
|
64
|
+
tool: { register: (tool) => $.tool.register(tool), call: (input) => $.tool.call(input) },
|
|
63
65
|
agent: {
|
|
64
66
|
list: () => $.agent.list(),
|
|
65
67
|
spawn: (args) => $.agent.spawn(args),
|
|
@@ -71,12 +73,16 @@ async function startMod($, eventInput, passOn) {
|
|
|
71
73
|
},
|
|
72
74
|
cmod: { call: (input) => $.cmod.call(input) },
|
|
73
75
|
};
|
|
74
|
-
await lifecycle.start(claude, readPlugin);
|
|
75
|
-
return
|
|
76
|
+
const [, answer] = await Promise.all([lifecycle.start(claude, readPlugin), passOn(eventInput)]);
|
|
77
|
+
return answer;
|
|
76
78
|
}
|
|
77
79
|
function routeToMod(_$, eventInput, passOn) {
|
|
78
80
|
return lifecycle.route(passOn.event, eventInput, (passed) => passOn(passed));
|
|
79
81
|
}
|
|
82
|
+
function routeCallToMod(_$, eventInput, passOn) {
|
|
83
|
+
const called = { ...eventInput, caller: passOn.origin.plugin };
|
|
84
|
+
return lifecycle.route('cmod.call', called, (passed) => passOn(Object.fromEntries(Object.entries(passed).filter(([key]) => key !== 'caller'))));
|
|
85
|
+
}
|
|
80
86
|
export function registerMod(addHook, definition, options) {
|
|
81
87
|
checksPermissions = false;
|
|
82
88
|
registered = definition;
|
|
@@ -107,7 +113,13 @@ export function registerMod(addHook, definition, options) {
|
|
|
107
113
|
addHook('ui.press', routeToMod);
|
|
108
114
|
addHook('ui.scroll', routeToMod);
|
|
109
115
|
addHook('ui.close', routeToMod);
|
|
110
|
-
addHook('cmod.call',
|
|
116
|
+
addHook('cmod.call', routeCallToMod);
|
|
117
|
+
if (definition.name !== cmodPluginName)
|
|
118
|
+
return;
|
|
119
|
+
addHook('session.append', routeToMod);
|
|
120
|
+
addHook('session.compact', routeToMod);
|
|
121
|
+
addHook('session.receive', routeToMod);
|
|
122
|
+
addHook('agent.spawn', routeToMod);
|
|
111
123
|
}
|
|
112
124
|
export function registerPermissionCheck(addHook) {
|
|
113
125
|
checksPermissions = true;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Claude } from './claude.js';
|
|
2
|
+
import type { Plugin } from './lifecycle.js';
|
|
3
|
+
export type Announced = {
|
|
4
|
+
readonly version: string;
|
|
5
|
+
readonly added: readonly string[];
|
|
6
|
+
};
|
|
7
|
+
export type Announcement = {
|
|
8
|
+
readonly message: string;
|
|
9
|
+
readonly description?: string;
|
|
10
|
+
readonly action?: {
|
|
11
|
+
readonly label: string;
|
|
12
|
+
readonly onClick: () => unknown;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
export declare const announcementMs = 10000;
|
|
16
|
+
export declare function announcedOf(saved: unknown): Announced | undefined;
|
|
17
|
+
export declare function announcementOf(claude: Claude, plugin: Plugin, granted: ReadonlySet<string>, added: readonly string[], previous: Announced | undefined): Promise<Announcement>;
|
|
18
|
+
//# sourceMappingURL=announce.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"announce.d.ts","sourceRoot":"","sources":["../src/runtime/announce.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE5C,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAA;AAEvF,MAAM,MAAM,YAAY,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,OAAO,CAAA;KAAE,CAAA;CAAE,CAAA;AAErK,eAAO,MAAM,cAAc,QAAS,CAAA;AAIpC,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,CAIjE;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,CAqCnL"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { changelogPage, isObject, marketplaceOf, permissionWords } from '../records.js';
|
|
2
|
+
import { changeLines, changelogSections, unreleased } from '../utils/changelog.js';
|
|
3
|
+
import { ifMissing } from '../utils/paths.js';
|
|
4
|
+
import { listed } from '../utils/text.js';
|
|
5
|
+
import { cmodPluginName } from './dependencies.js';
|
|
6
|
+
export const announcementMs = 10_000;
|
|
7
|
+
const shownChanges = 3;
|
|
8
|
+
export function announcedOf(saved) {
|
|
9
|
+
if (typeof saved === 'string')
|
|
10
|
+
return { version: saved, added: [] };
|
|
11
|
+
if (!isObject(saved) || typeof saved['version'] !== 'string')
|
|
12
|
+
return undefined;
|
|
13
|
+
return { version: saved['version'], added: Array.isArray(saved['added']) ? saved['added'].map(String) : [] };
|
|
14
|
+
}
|
|
15
|
+
export async function announcementOf(claude, plugin, granted, added, previous) {
|
|
16
|
+
const read = (path) => claude.fs.read(`${plugin.root}/${path}`).catch(ifMissing(undefined));
|
|
17
|
+
const manifest = jsonOf(await read('.claude-plugin/plugin.json'));
|
|
18
|
+
const field = (key) => (isObject(manifest) && typeof manifest[key] === 'string' ? manifest[key] : undefined);
|
|
19
|
+
const open = (page) => () => claude.cmod.call({ to: cmodPluginName, method: 'openSettings', input: { mod: plugin.name, ...(page === undefined ? {} : { page }) } });
|
|
20
|
+
if (previous === undefined) {
|
|
21
|
+
const { program, keys } = plugin.steps;
|
|
22
|
+
const lines = [
|
|
23
|
+
field('description'),
|
|
24
|
+
added.length > 0 ? `Adds ${listed(added)}.` : undefined,
|
|
25
|
+
program === undefined ? undefined : `Installed the ${program} program.`,
|
|
26
|
+
...Object.entries(keys ?? {}).map(([key, command]) => `Binds ${key} to /${command}.`),
|
|
27
|
+
...[...granted].map((item) => `${permissionWords(item)}.`),
|
|
28
|
+
];
|
|
29
|
+
return { message: 'Installed', ...described(lines), action: { label: 'Settings', onClick: open() } };
|
|
30
|
+
}
|
|
31
|
+
const version = plugin.version ?? '';
|
|
32
|
+
const isCheckout = marketplaceOf(plugin.root, plugin.name) === undefined;
|
|
33
|
+
const sections = changelogSections((await read('CHANGELOG.md')) ?? '');
|
|
34
|
+
const section = sections.find((each) => each.version === version) ?? (isCheckout ? sections.find((each) => each.version === unreleased) : undefined);
|
|
35
|
+
const changes = section === undefined ? [] : changeLines(section.text);
|
|
36
|
+
const nowAdded = added.filter((each) => !previous.added.includes(each));
|
|
37
|
+
const gone = previous.added.filter((each) => !added.includes(each));
|
|
38
|
+
const fallback = previous.added.length === 0 ? [] : [nowAdded.length > 0 ? `Now adds ${listed(nowAdded)}.` : undefined, gone.length > 0 ? `No longer adds ${listed(gone)}.` : undefined];
|
|
39
|
+
const home = await claude.env.home();
|
|
40
|
+
const folder = home !== undefined && plugin.root.startsWith(`${home}/`) ? `~${plugin.root.slice(home.length)}` : plugin.root;
|
|
41
|
+
const repository = field('repository');
|
|
42
|
+
const lines = [
|
|
43
|
+
...(changes.length === 0 ? fallback : changes.length > shownChanges ? [...changes.slice(0, shownChanges), '…'] : changes),
|
|
44
|
+
`From ${previous.version}${isCheckout ? `, loaded from ${folder}` : ''}.`,
|
|
45
|
+
repository === undefined || isCheckout ? undefined : `Release notes: ${repository.replace(/\/$/, '')}/releases/tag/v${version}`,
|
|
46
|
+
];
|
|
47
|
+
return {
|
|
48
|
+
message: `Updated to ${version}`,
|
|
49
|
+
...described(lines),
|
|
50
|
+
...(sections.length > 0 ? { action: { label: 'Changelog', onClick: open(changelogPage) } } : {}),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function jsonOf(text) {
|
|
54
|
+
try {
|
|
55
|
+
return text === undefined ? undefined : JSON.parse(text);
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
if (error instanceof SyntaxError)
|
|
59
|
+
return undefined;
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function described(lines) {
|
|
64
|
+
const kept = lines.filter((line) => line !== undefined);
|
|
65
|
+
return kept.length === 0 ? {} : { description: kept.join('\n') };
|
|
66
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bound.d.ts","sourceRoot":"","sources":["../src/runtime/bound.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAIxC,wBAAgB,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAE3C;AAED,wBAAgB,KAAK,IAAI,OAAO,CAG/B"}
|
package/runtime/bound.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
let current;
|
|
2
|
+
export function bind(imports) {
|
|
3
|
+
current = imports;
|
|
4
|
+
}
|
|
5
|
+
export function bound() {
|
|
6
|
+
if (current === undefined)
|
|
7
|
+
throw new Error("A mod's imports work once its setup runs. Call them from setup or from a hook, never at the top of a module.");
|
|
8
|
+
return current;
|
|
9
|
+
}
|
package/runtime/claude.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import type { AgentInfo, AgentSpawnArgs, AgentSpawnResult, Args, EngineInterface, AskOptions, CommandSpec, ConfigRow, ElementTable, FsEntry, FsStat, FsStatOptions, HookStream, HttpInit, HttpResponse, InvalidatableEventName, PaneCloseArgs, PaneOpenArgs, ProcessRunInit, ProcessRunResult, ProcessSpawnChunk, ProcessSpawnRequest, ProcessSpawnResult, RenderSurface, ResolveInput, SessionUsage, Settings, SettingsReadArgs, Timer,
|
|
1
|
+
import type { AgentInfo, AgentSpawnArgs, AgentSpawnResult, Args, EngineInterface, AskOptions, CommandSpec, ConfigRow, ElementTable, FsEntry, FsStat, FsStatOptions, HookStream, HttpInit, HttpResponse, InvalidatableEventName, PaneCloseArgs, PaneOpenArgs, ProcessRunInit, ProcessRunResult, ProcessSpawnChunk, ProcessSpawnRequest, ProcessSpawnResult, RenderSurface, ResolveInput, SessionUsage, Settings, SettingsReadArgs, Timer, ToolSpec, UiCopyArgs, UiCopyResult, UiLogOptions, UiOpenResult, UiPane, UiScrollArgs, UiScrollResult } from 'claude-code';
|
|
2
2
|
export type Claude = {
|
|
3
3
|
readonly plugin: {
|
|
4
4
|
readonly name: string;
|
|
5
5
|
readonly root: string;
|
|
6
6
|
};
|
|
7
7
|
readonly ui: {
|
|
8
|
-
toast(text: string, options?: ToastOptions): void;
|
|
9
8
|
status(text: string | undefined): void;
|
|
10
9
|
log(text: string, options?: UiLogOptions): void;
|
|
11
10
|
notice(toolUseId: string, text: string | undefined): void;
|
|
@@ -15,6 +14,7 @@ export type Claude = {
|
|
|
15
14
|
close(pane: PaneCloseArgs): Promise<void>;
|
|
16
15
|
panes(): Promise<readonly UiPane[]>;
|
|
17
16
|
scroll(args: UiScrollArgs): Promise<UiScrollResult>;
|
|
17
|
+
copy(args: UiCopyArgs): Promise<UiCopyResult>;
|
|
18
18
|
resolve(e: ResolveInput): ElementTable<RenderSurface>;
|
|
19
19
|
};
|
|
20
20
|
readonly process: {
|
|
@@ -36,7 +36,6 @@ export type Claude = {
|
|
|
36
36
|
};
|
|
37
37
|
readonly config: {
|
|
38
38
|
list(): Promise<ConfigRow[]>;
|
|
39
|
-
set: EngineInterface['config']['set'];
|
|
40
39
|
};
|
|
41
40
|
readonly store: {
|
|
42
41
|
get(key: string): Promise<unknown>;
|
|
@@ -58,6 +57,7 @@ export type Claude = {
|
|
|
58
57
|
surfaces(): Promise<readonly RenderSurface[]>;
|
|
59
58
|
messages: EngineInterface['session']['messages'];
|
|
60
59
|
append: EngineInterface['session']['append'];
|
|
60
|
+
send: EngineInterface['session']['send'];
|
|
61
61
|
};
|
|
62
62
|
readonly prompt: {
|
|
63
63
|
submit: EngineInterface['prompt']['submit'];
|
package/runtime/claude.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../src/runtime/claude.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,gBAAgB,EAChB,IAAI,EACJ,eAAe,EACf,UAAU,EACV,WAAW,EACX,SAAS,EACT,YAAY,EACZ,OAAO,EACP,MAAM,EACN,aAAa,EACb,UAAU,EACV,QAAQ,EACR,YAAY,EACZ,sBAAsB,EACtB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,KAAK,EACL,
|
|
1
|
+
{"version":3,"file":"claude.d.ts","sourceRoot":"","sources":["../src/runtime/claude.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Args, EventResult, Frozen } from 'claude-code';
|
|
2
|
+
import type { Claude } from './claude.js';
|
|
3
|
+
import type { Router } from './router.js';
|
|
4
|
+
export type Conversations = {
|
|
5
|
+
answer(e: Frozen<Args<'cmod.call'>> & {
|
|
6
|
+
readonly caller?: string;
|
|
7
|
+
}): Promise<EventResult<'cmod.call'> | undefined>;
|
|
8
|
+
};
|
|
9
|
+
export declare function serveConversations({ claude, router, store, project, report }: {
|
|
10
|
+
readonly claude: Claude;
|
|
11
|
+
readonly router: Router;
|
|
12
|
+
readonly store: string;
|
|
13
|
+
readonly project: () => string;
|
|
14
|
+
readonly report: (id: string, message: string, error: unknown) => void;
|
|
15
|
+
}): Conversations;
|
|
16
|
+
//# sourceMappingURL=conversations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversations.d.ts","sourceRoot":"","sources":["../src/runtime/conversations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAU5D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAGzC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAWzC,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,GAAG;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,CAAA;CACnH,CAAA;AAED,wBAAgB,kBAAkB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CAAE,GAAG,aAAa,CAoQlR"}
|