@12ui/design 0.2.85 → 0.2.87
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/README.md +37 -6
- package/SKILL.md +1 -1
- package/codex-plugin/assets/12ui-icon-dark.png +0 -0
- package/codex-plugin/assets/12ui-icon.png +0 -0
- package/codex-plugin/marketplace.json +20 -0
- package/codex-plugin/mcp.json +7 -0
- package/codex-plugin/plugin.json +157 -0
- package/dist/agent-command-runner.d.ts +41 -0
- package/dist/agent-command-runner.d.ts.map +1 -0
- package/dist/agent-command-runner.js +90 -0
- package/dist/agent-command-runner.js.map +1 -0
- package/dist/agent-plugin-step.d.ts +47 -0
- package/dist/agent-plugin-step.d.ts.map +1 -0
- package/dist/agent-plugin-step.js +190 -0
- package/dist/agent-plugin-step.js.map +1 -0
- package/dist/claude-plugin-installer.d.ts +61 -0
- package/dist/claude-plugin-installer.d.ts.map +1 -0
- package/dist/claude-plugin-installer.js +178 -0
- package/dist/claude-plugin-installer.js.map +1 -0
- package/dist/cli-run.d.ts.map +1 -1
- package/dist/cli-run.js +9 -1
- package/dist/cli-run.js.map +1 -1
- package/dist/cli-skill-command.d.ts +6 -0
- package/dist/cli-skill-command.d.ts.map +1 -1
- package/dist/cli-skill-command.js +39 -9
- package/dist/cli-skill-command.js.map +1 -1
- package/dist/cli-update-command.d.ts +22 -0
- package/dist/cli-update-command.d.ts.map +1 -0
- package/dist/cli-update-command.js +39 -0
- package/dist/cli-update-command.js.map +1 -0
- package/dist/cli-usage.d.ts.map +1 -1
- package/dist/cli-usage.js +1 -0
- package/dist/cli-usage.js.map +1 -1
- package/dist/codex-plugin-installer.d.ts +56 -0
- package/dist/codex-plugin-installer.d.ts.map +1 -0
- package/dist/codex-plugin-installer.js +239 -0
- package/dist/codex-plugin-installer.js.map +1 -0
- package/dist/codex-skill-config.d.ts +22 -0
- package/dist/codex-skill-config.d.ts.map +1 -1
- package/dist/codex-skill-config.js +84 -2
- package/dist/codex-skill-config.js.map +1 -1
- package/dist/mcp-slate-tool-defs.d.ts.map +1 -1
- package/dist/mcp-slate-tool-defs.js +2 -1
- package/dist/mcp-slate-tool-defs.js.map +1 -1
- package/dist/mcp-slate-ui-copy.d.ts +6 -0
- package/dist/mcp-slate-ui-copy.d.ts.map +1 -1
- package/dist/mcp-slate-ui-copy.js +3 -0
- package/dist/mcp-slate-ui-copy.js.map +1 -1
- package/dist/mcp-slate-ui-locales/de-DE.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/de-DE.js +2 -0
- package/dist/mcp-slate-ui-locales/de-DE.js.map +1 -1
- package/dist/mcp-slate-ui-locales/es-419.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/es-419.js +2 -0
- package/dist/mcp-slate-ui-locales/es-419.js.map +1 -1
- package/dist/mcp-slate-ui-locales/es-ES.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/es-ES.js +2 -0
- package/dist/mcp-slate-ui-locales/es-ES.js.map +1 -1
- package/dist/mcp-slate-ui-locales/fr-FR.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/fr-FR.js +2 -0
- package/dist/mcp-slate-ui-locales/fr-FR.js.map +1 -1
- package/dist/mcp-slate-ui-locales/hi-IN.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/hi-IN.js +2 -0
- package/dist/mcp-slate-ui-locales/hi-IN.js.map +1 -1
- package/dist/mcp-slate-ui-locales/it-IT.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/it-IT.js +2 -0
- package/dist/mcp-slate-ui-locales/it-IT.js.map +1 -1
- package/dist/mcp-slate-ui-locales/ja-JP.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/ja-JP.js +2 -0
- package/dist/mcp-slate-ui-locales/ja-JP.js.map +1 -1
- package/dist/mcp-slate-ui-locales/ko-KR.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/ko-KR.js +2 -0
- package/dist/mcp-slate-ui-locales/ko-KR.js.map +1 -1
- package/dist/mcp-slate-ui-locales/pt-BR.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/pt-BR.js +2 -0
- package/dist/mcp-slate-ui-locales/pt-BR.js.map +1 -1
- package/dist/mcp-slate-ui-locales/zh-CN.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/zh-CN.js +2 -0
- package/dist/mcp-slate-ui-locales/zh-CN.js.map +1 -1
- package/dist/mcp-slate-ui-locales/zh-TW.d.ts.map +1 -1
- package/dist/mcp-slate-ui-locales/zh-TW.js +2 -0
- package/dist/mcp-slate-ui-locales/zh-TW.js.map +1 -1
- package/dist/mcp-slate-ui-script-designs.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-designs.js +21 -0
- package/dist/mcp-slate-ui-script-designs.js.map +1 -1
- package/dist/mcp-slate-ui-script-remote.d.ts.map +1 -1
- package/dist/mcp-slate-ui-script-remote.js +1 -0
- package/dist/mcp-slate-ui-script-remote.js.map +1 -1
- package/dist/mcp-slate-ui-styles-designs.d.ts.map +1 -1
- package/dist/mcp-slate-ui-styles-designs.js +3 -0
- package/dist/mcp-slate-ui-styles-designs.js.map +1 -1
- package/dist/run-journal-commands.d.ts.map +1 -1
- package/dist/run-journal-commands.js +5 -0
- package/dist/run-journal-commands.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -1
- package/dist/server.js.map +1 -1
- package/dist/skill-clients.d.ts +2 -1
- package/dist/skill-clients.d.ts.map +1 -1
- package/dist/skill-clients.js +58 -1
- package/dist/skill-clients.js.map +1 -1
- package/dist/slate-captions-local.d.ts +2 -0
- package/dist/slate-captions-local.d.ts.map +1 -1
- package/dist/slate-captions-local.js +9 -3
- package/dist/slate-captions-local.js.map +1 -1
- package/dist/slate-ledger.d.ts +1 -1
- package/dist/slate-ledger.d.ts.map +1 -1
- package/dist/slate-retry.d.ts +22 -0
- package/dist/slate-retry.d.ts.map +1 -0
- package/dist/slate-retry.js +49 -0
- package/dist/slate-retry.js.map +1 -0
- package/dist/slate-round-runner.d.ts.map +1 -1
- package/dist/slate-round-runner.js +2 -1
- package/dist/slate-round-runner.js.map +1 -1
- package/dist/slate-run-action.d.ts.map +1 -1
- package/dist/slate-run-action.js +29 -1
- package/dist/slate-run-action.js.map +1 -1
- package/dist/slate-runtime.d.ts +3 -0
- package/dist/slate-runtime.d.ts.map +1 -1
- package/dist/slate-runtime.js +1 -0
- package/dist/slate-runtime.js.map +1 -1
- package/dist/slate-view-contract.d.ts +1 -1
- package/dist/slate-view-contract.d.ts.map +1 -1
- package/dist/slate-view-contract.js +1 -1
- package/dist/slate-view-contract.js.map +1 -1
- package/dist/slate-workspace-parse.d.ts.map +1 -1
- package/dist/slate-workspace-parse.js +1 -0
- package/dist/slate-workspace-parse.js.map +1 -1
- package/dist/slate-workspace-types.d.ts +2 -0
- package/dist/slate-workspace-types.d.ts.map +1 -1
- package/dist/workspace-draw-branch.d.ts.map +1 -1
- package/dist/workspace-draw-branch.js +2 -2
- package/dist/workspace-draw-branch.js.map +1 -1
- package/dist/workspace-draw-messages.d.ts +2 -0
- package/dist/workspace-draw-messages.d.ts.map +1 -1
- package/dist/workspace-draw-messages.js +3 -0
- package/dist/workspace-draw-messages.js.map +1 -1
- package/open-design.json +2 -2
- package/package.json +2 -1
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
1
2
|
import os from 'node:os';
|
|
2
3
|
import path from 'node:path';
|
|
4
|
+
import { installAgentPlugins, planAgentPlugins, pluginInstalled, removeAgentPlugins, } from './agent-plugin-step.js';
|
|
3
5
|
import { booleanFlag, stringFlag } from './cli-arguments.js';
|
|
4
6
|
import { persistCurrentCli } from './cli-persistence.js';
|
|
5
7
|
import { cliPersistenceLines } from './cli-persistence-report.js';
|
|
@@ -54,15 +56,17 @@ const resolveTargets = async (flags, skills) => {
|
|
|
54
56
|
};
|
|
55
57
|
};
|
|
56
58
|
const skippedClientLines = (skipped) => skipped.map((client) => (`${client}: not installed on this machine; skipped.`));
|
|
57
|
-
const printStatus = async (skills, targets, skipped, json) => {
|
|
59
|
+
const printStatus = async (skills, targets, skipped, json, withPlugins) => {
|
|
58
60
|
const [installations, credentials] = await Promise.all([
|
|
59
61
|
Promise.all(targets.map(async (target) => {
|
|
60
62
|
const status = await inspectSkillInstallation(target.destination, target.client);
|
|
63
|
+
const plugin = withPlugins ? await pluginInstalled(target) : undefined;
|
|
61
64
|
return {
|
|
62
65
|
client: target.client,
|
|
63
66
|
destination: target.destination,
|
|
64
67
|
skillName: target.skill,
|
|
65
68
|
status,
|
|
69
|
+
...(plugin === undefined ? {} : { plugin: plugin ? 'installed' : 'not_installed' }),
|
|
66
70
|
...(target.client === 'codex' && status !== 'not_installed'
|
|
67
71
|
? { enabled: await isCodexSkillEnabled(target.destination) }
|
|
68
72
|
: {}),
|
|
@@ -86,7 +90,8 @@ const printStatus = async (skills, targets, skipped, json) => {
|
|
|
86
90
|
const enabled = 'enabled' in installation
|
|
87
91
|
? `, ${installation.enabled ? 'enabled' : 'disabled'}`
|
|
88
92
|
: '';
|
|
89
|
-
|
|
93
|
+
const plugin = 'plugin' in installation ? `; plugin ${installation.plugin}` : '';
|
|
94
|
+
console.log(`${installation.client}: ${installation.skillName} ${installation.status}${enabled}${plugin}`
|
|
90
95
|
+ ` (${installation.destination})`);
|
|
91
96
|
}
|
|
92
97
|
for (const line of skippedClientLines(skipped))
|
|
@@ -103,10 +108,15 @@ export const runSkillCommand = async (action, flags, dependencies = {}) => {
|
|
|
103
108
|
}
|
|
104
109
|
const { targets, skipped } = await resolveTargets(flags, skills);
|
|
105
110
|
if (action === 'status') {
|
|
106
|
-
await printStatus(skills, targets, skipped, booleanFlag(flags, 'json'));
|
|
111
|
+
await printStatus(skills, targets, skipped, booleanFlag(flags, 'json'), Boolean(dependencies.agentPlugins));
|
|
107
112
|
return;
|
|
108
113
|
}
|
|
109
|
-
if (action === 'remove') {
|
|
114
|
+
if (action === 'remove' || action === 'uninstall') {
|
|
115
|
+
const pluginLines = dependencies.agentPlugins
|
|
116
|
+
? await removeAgentPlugins(targets, dependencies.agentPlugins)
|
|
117
|
+
: [];
|
|
118
|
+
for (const line of pluginLines)
|
|
119
|
+
console.log(line);
|
|
110
120
|
const removed = await Promise.all(targets.map(async (target) => ({
|
|
111
121
|
...target,
|
|
112
122
|
removed: await removeSkill(target.destination),
|
|
@@ -118,13 +128,15 @@ export const runSkillCommand = async (action, flags, dependencies = {}) => {
|
|
|
118
128
|
}
|
|
119
129
|
for (const line of skippedClientLines(skipped))
|
|
120
130
|
console.log(line);
|
|
121
|
-
|
|
131
|
+
const credentialFile = resolveCredentialFile();
|
|
132
|
+
if (existsSync(credentialFile))
|
|
133
|
+
console.log(`Credentials were retained at ${credentialFile}.`);
|
|
122
134
|
return;
|
|
123
135
|
}
|
|
124
136
|
if (action !== 'install') {
|
|
125
137
|
throw usageRefusal({
|
|
126
138
|
reason: `${action ? `\`${action}\` is not` : 'No action was given, and'}`
|
|
127
|
-
+ ' a `12ui skill` action. The actions are install, status, print, and remove.',
|
|
139
|
+
+ ' a `12ui skill` action. The actions are install, status, print, and remove (or uninstall).',
|
|
128
140
|
code: 'skill_usage',
|
|
129
141
|
verb: ['skill'],
|
|
130
142
|
});
|
|
@@ -133,7 +145,10 @@ export const runSkillCommand = async (action, flags, dependencies = {}) => {
|
|
|
133
145
|
if (booleanFlag(flags, 'skip-auth') && authRequested) {
|
|
134
146
|
throw new Error('--skip-auth cannot be combined with --api-key, --login-origin, or --key-name');
|
|
135
147
|
}
|
|
136
|
-
const
|
|
148
|
+
const plan = dependencies.agentPlugins
|
|
149
|
+
? await planAgentPlugins(targets, dependencies.agentPlugins)
|
|
150
|
+
: { pluginTargets: [], skillTargets: targets, notes: [] };
|
|
151
|
+
const inspected = await Promise.all(plan.skillTargets.map(async (target) => ({
|
|
137
152
|
target,
|
|
138
153
|
status: await inspectSkillInstallation(target.destination, target.client),
|
|
139
154
|
})));
|
|
@@ -161,14 +176,21 @@ export const runSkillCommand = async (action, flags, dependencies = {}) => {
|
|
|
161
176
|
}
|
|
162
177
|
let persistence;
|
|
163
178
|
let results;
|
|
179
|
+
let plugins = [];
|
|
164
180
|
let legacy;
|
|
165
181
|
let retiredCodexSkillConfigs;
|
|
166
182
|
let codexCleanup;
|
|
167
183
|
let credentials = null;
|
|
168
184
|
try {
|
|
169
185
|
persistence = await (dependencies.persistCli ?? (() => persistCurrentCli()))();
|
|
186
|
+
plugins = dependencies.agentPlugins && plan.pluginTargets.length > 0
|
|
187
|
+
? await installAgentPlugins(plan.pluginTargets, dependencies.agentPlugins)
|
|
188
|
+
: [];
|
|
170
189
|
results = await installSkillsTransaction({
|
|
171
|
-
targets
|
|
190
|
+
targets: [
|
|
191
|
+
...plan.skillTargets,
|
|
192
|
+
...plugins.filter((outcome) => !outcome.installed).map((outcome) => outcome.target),
|
|
193
|
+
],
|
|
172
194
|
force: booleanFlag(flags, 'force'),
|
|
173
195
|
});
|
|
174
196
|
const codexTargets = results.filter(({ target }) => target.client === 'codex');
|
|
@@ -212,6 +234,10 @@ export const runSkillCommand = async (action, flags, dependencies = {}) => {
|
|
|
212
234
|
console.log(`${result.target.client}: ${result.target.skill} ${result.result.replace('_', ' ')}${enabled}`
|
|
213
235
|
+ ` at ${result.target.destination}.`);
|
|
214
236
|
}
|
|
237
|
+
for (const outcome of plugins)
|
|
238
|
+
console.log(outcome.line);
|
|
239
|
+
for (const note of plan.notes)
|
|
240
|
+
console.log(note);
|
|
215
241
|
for (const line of skippedClientLines(skipped))
|
|
216
242
|
console.log(line);
|
|
217
243
|
for (const line of cliPersistenceLines(persistence))
|
|
@@ -245,6 +271,10 @@ export const runSkillCommand = async (action, flags, dependencies = {}) => {
|
|
|
245
271
|
else {
|
|
246
272
|
console.log('Skill installed; no 12ui API account is required to install. Run 12ui auth login when using hosted features.');
|
|
247
273
|
}
|
|
248
|
-
|
|
274
|
+
const legacyWorkspaceData = codexCleanup?.workspaceData
|
|
275
|
+
?? path.join(os.homedir(), '.12ui', 'codex-design');
|
|
276
|
+
if (existsSync(legacyWorkspaceData)) {
|
|
277
|
+
console.log(`Legacy codex-design workspace data is preserved at ${legacyWorkspaceData}.`);
|
|
278
|
+
}
|
|
249
279
|
};
|
|
250
280
|
//# sourceMappingURL=cli-skill-command.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-skill-command.js","sourceRoot":"","sources":["../src/cli-skill-command.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli-skill-command.js","sourceRoot":"","sources":["../src/cli-skill-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,kBAAkB,GAEnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAiB,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAA6B,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EACL,+BAA+B,EAC/B,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,4BAA4B,GAG7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,yBAAyB,EACzB,+BAA+B,GAChC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,+BAA+B,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,4BAA4B,EAC5B,WAAW,EACX,uBAAuB,EACvB,qBAAqB,EACrB,aAAa,EACb,qBAAqB,GAItB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,cAAc,GAAG,CAAC,KAAe,EAAuB,EAAE;IAC9D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACzC,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,CAAC,GAAG,qBAAqB,CAAC,CAAC;IAC3D,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,2BAA2B,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,CAAC;AACjB,CAAC,CAAC;AAYF,MAAM,cAAc,GAAG,KAAK,EAC1B,KAAe,EACf,MAAoC,EACV,EAAE;IAC5B,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C,IAAI,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5F,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,4BAA4B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO;YACL,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;gBAC9B,MAAM,EAAE,WAAW;gBACnB,WAAW,EAAE,qBAAqB,CAAC;oBACjC,MAAM,EAAE,WAAW;oBACnB,UAAU;oBACV,KAAK;iBACN,CAAC;gBACF,KAAK;aACN,CAAC,CAAC;YACH,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IACD,MAAM,UAAU,GAAG,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC1D,oBAAoB,CAAC,EAAE,KAAK,EAAE,CAAC,CAChC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACZ,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,yCAAyC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;cACnE,mCAAmC,CACtC,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACjE,OAAO;QACL,OAAO,EAAE,UAAU;QACnB,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;KAC9D,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,OAA+B,EAAY,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAChG,GAAG,MAAM,2CAA2C,CACrD,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,KAAK,EACvB,MAAoC,EACpC,OAA+B,EAC/B,OAA+B,EAC/B,IAAa,EACb,WAAoB,EACL,EAAE;IACjB,MAAM,CAAC,aAAa,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;YACvC,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACjF,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACvE,OAAO;gBACL,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,SAAS,EAAE,MAAM,CAAC,KAAK;gBACvB,MAAM;gBACN,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC;gBACnF,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,eAAe;oBACzD,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;oBAC5D,CAAC,CAAC,EAAE,CAAC;aACR,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,+BAA+B,EAAE;KAClC,CAAC,CAAC;IACH,MAAM,MAAM,GAAG;QACb,aAAa,EAAE,CAAC;QAChB,cAAc,EAAE,MAAM;QACtB,aAAa;QACb,cAAc,EAAE,OAAO;QACvB,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB;QAC1D,cAAc,EAAE,qBAAqB,EAAE;KACxC,CAAC;IACF,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IACD,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,SAAS,IAAI,YAAY;YACvC,CAAC,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE;YACtD,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,MAAM,GAAG,QAAQ,IAAI,YAAY,CAAC,CAAC,CAAC,YAAY,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,OAAO,CAAC,GAAG,CACT,GAAG,YAAY,CAAC,MAAM,KAAK,YAAY,CAAC,SAAS,IAAI,YAAY,CAAC,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE;cAC3F,KAAK,YAAY,CAAC,WAAW,GAAG,CACnC,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,kBAAkB,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC;AAC/E,CAAC,CAAC;AAYF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,MAA0B,EAC1B,KAAe,EACf,eAAyC,EAAE,EAC5B,EAAE;IACjB,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACzE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjE,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC;QAC5G,OAAO;IACT,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAClD,MAAM,WAAW,GAAG,YAAY,CAAC,YAAY;YAC3C,CAAC,CAAC,MAAM,kBAAkB,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC;YAC9D,CAAC,CAAC,EAAE,CAAC;QACP,KAAK,MAAM,IAAI,IAAI,WAAW;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;YAC/D,GAAG,MAAM;YACT,OAAO,EAAE,MAAM,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC;SAC/C,CAAC,CAAC,CAAC,CAAC;QACL,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO;gBACxB,CAAC,CAAC,WAAW,MAAM,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,WAAW,GAAG;gBAC3E,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,yBAAyB,MAAM,CAAC,MAAM,OAAO,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;QACzF,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,kBAAkB,CAAC,OAAO,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClE,MAAM,cAAc,GAAG,qBAAqB,EAAE,CAAC;QAC/C,IAAI,UAAU,CAAC,cAAc,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,gCAAgC,cAAc,GAAG,CAAC,CAAC;QAC/F,OAAO;IACT,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,YAAY,CAAC;YACjB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,WAAW,CAAC,CAAC,CAAC,0BAA0B,EAAE;kBACrE,4FAA4F;YAChG,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,CAAC,OAAO,CAAC;SAChB,CAAC,CAAC;IACL,CAAC;IACD,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,SAAS,CAAC,CAAC;IAClH,IAAI,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,aAAa,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAClG,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY;QACpC,CAAC,CAAC,MAAM,gBAAgB,CAAC,OAAO,EAAE,YAAY,CAAC,YAAY,CAAC;QAC5D,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IAC5D,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3E,MAAM;QACN,MAAM,EAAE,MAAM,wBAAwB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC;KAC1E,CAAC,CAAC,CAAC,CAAC;IACL,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;IAC3E,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QACzD,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CACnE,+BAA+B,CAAC,MAAM,CAAC,WAAW,CAAC,CACpD,CAAC,CAAC,CAAC;QACJ,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,YAAY,CAAC,CAAC;QACrF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CACb,qCACE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAC3D,+BAA+B,CAChC,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,qBAAqB,GAAmC,IAAI,CAAC;IACjE,IAAI,aAAa,EAAE,CAAC;QAClB,qBAAqB,GAAG,MAAM,CAC5B,YAAY,CAAC,kBAAkB,IAAI,4BAA4B,CAChE,CAAC;YACA,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC;YACpC,MAAM,EAAE,UAAU,CAAC,KAAK,EAAE,QAAQ,CAAC;YACnC,WAAW,EAAE,UAAU,CAAC,KAAK,EAAE,cAAc,CAAC;YAC9C,OAAO,EAAE,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC;YACtC,cAAc,EAAE,uBAAuB,CAAC,MAAM,CAAC;YAC/C,aAAa,EAAE,CAAC,GAAG,EAAE,EAAE;gBACrB,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;gBACjF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IACD,IAAI,WAAiC,CAAC;IACtC,IAAI,OAA6D,CAAC;IAClE,IAAI,OAAO,GAAoD,EAAE,CAAC;IAClE,IAAI,MAAgE,CAAC;IACrE,IAAI,wBAAqF,CAAC;IAC1F,IAAI,YAA0E,CAAC;IAC/E,IAAI,WAAW,GAAiC,IAAI,CAAC;IACrD,IAAI,CAAC;QACH,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC;QAC/E,OAAO,GAAG,YAAY,CAAC,YAAY,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;YAClE,CAAC,CAAC,MAAM,mBAAmB,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,YAAY,CAAC;YAC1E,CAAC,CAAC,EAAE,CAAC;QACP,OAAO,GAAG,MAAM,wBAAwB,CAAC;YACvC,OAAO,EAAE;gBACP,GAAG,IAAI,CAAC,YAAY;gBACpB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;aACpF;YACD,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC;SACnC,CAAC,CAAC;QACH,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;QAC/E,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,YAAY;YAAE,MAAM,gBAAgB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAClF,MAAM,WAAW,GAAG;YAClB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YAC5D,GAAG,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;SACrF,CAAC;QACF,MAAM,GAAG,MAAM,4BAA4B,CAAC;YAC1C,KAAK,EAAE,WAAW;YAClB,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;SACxD,CAAC,CAAC;QACH,wBAAwB,GAAG,MAAM,+BAA+B,CAAC;YAC/D,yBAAyB,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC;YAC/E,iBAAiB,EAAE,CAAC,QAAQ,CAAC;SAC9B,CAAC,CAAC;QACH,YAAY,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC;YACtC,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,MAAM,yBAAyB,EAAE,CAAC;QACtC,WAAW,GAAG,qBAAqB;YACjC,CAAC,CAAC,MAAM,qBAAqB,CAAC,MAAM,EAAE;YACtC,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,qBAAqB,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,qBAAqB,CAAC,QAAQ,EAAE,CAAC;YACzC,CAAC;YAAC,OAAO,aAAa,EAAE,CAAC;gBACvB,MAAM,IAAI,cAAc,CACtB;oBACE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACzD,aAAa,YAAY,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;iBAClF,EACD,8EAA8E,CAC/E,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,OAAO,CAAC,GAAG,CACT,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,OAAO,EAAE;cAC5F,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,GAAG,CACtC,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,kBAAkB,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClE,KAAK,MAAM,IAAI,IAAI,mBAAmB,CAAC,WAAW,CAAC;QAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACvE,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,oCAAoC,OAAO,EAAE,CAAC,CAAC;IACjG,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,4DAA4D,SAAS,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,wBAAwB,CAAC,OAAO,EAAE,CAAC;QACvD,OAAO,CAAC,GAAG,CAAC,6CAA6C,OAAO,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,wBAAwB,CAAC,SAAS,EAAE,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,gEAAgE,SAAS,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,OAAO,IAAI,EAAE,EAAE,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,wDAAwD,OAAO,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,KAAK,MAAM,SAAS,IAAI,YAAY,EAAE,SAAS,IAAI,EAAE,EAAE,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,oDAAoD,SAAS,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,2CAA2C,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,IAAI,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CACT,oBAAoB,WAAW,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE;kBAC7E,qBAAqB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,WAAW,CAAC,cAAc,GAAG,CAC7E,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,8GAA8G,CAAC,CAAC;IAC9H,CAAC;IACD,MAAM,mBAAmB,GAAG,YAAY,EAAE,aAAa;WAClD,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;IACtD,IAAI,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,sDAAsD,mBAAmB,GAAG,CAAC,CAAC;IAC5F,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type AgentPluginContext } from './agent-plugin-step.js';
|
|
2
|
+
/** The one update path: the newest release's own `skill install`. */
|
|
3
|
+
export declare const UPDATE_COMMAND: readonly ["-y", "@12ui/design@latest", "skill", "install"];
|
|
4
|
+
export type UpdateSpawner = (command: string, args: readonly string[], environment: NodeJS.ProcessEnv) => Promise<number | null>;
|
|
5
|
+
/**
|
|
6
|
+
* `12ui update` runs `npx -y @12ui/design@latest skill install`: the newest
|
|
7
|
+
* release pins itself as the `12ui` on PATH (the same `persistCurrentCli` every
|
|
8
|
+
* install uses), refreshes every skill copy, rewrites the Codex plugin folder
|
|
9
|
+
* and re-adds the plugin wherever its bytes changed, and re-checks the Claude
|
|
10
|
+
* Code plugin. Its output is that install's own lines; it never prompts and
|
|
11
|
+
* never reads `OPENAI_API_KEY`. Then every Claude Code home with the plugin
|
|
12
|
+
* from 12ui-plugin runs `claude plugin marketplace update 12ui-plugin` and
|
|
13
|
+
* `claude plugin update 12ui-design@12ui-plugin` (the CLI entry passes the
|
|
14
|
+
* plugin context; without it this step is skipped). Between updates Claude
|
|
15
|
+
* Code refreshes the plugin by itself: its marketplace is set to auto-update.
|
|
16
|
+
*/
|
|
17
|
+
export declare const runUpdateCommand: (dependencies?: {
|
|
18
|
+
spawner?: UpdateSpawner;
|
|
19
|
+
environment?: NodeJS.ProcessEnv;
|
|
20
|
+
agentPlugins?: AgentPluginContext;
|
|
21
|
+
}) => Promise<void>;
|
|
22
|
+
//# sourceMappingURL=cli-update-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-update-command.d.ts","sourceRoot":"","sources":["../src/cli-update-command.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGtF,qEAAqE;AACrE,eAAO,MAAM,cAAc,4DAA6D,CAAC;AAEzF,MAAM,MAAM,aAAa,GAAG,CAC1B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,WAAW,EAAE,MAAM,CAAC,UAAU,KAC3B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAY5B;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,gBAAgB,GAC3B,eAAc;IAAE,OAAO,CAAC,EAAE,aAAa,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,YAAY,CAAC,EAAE,kBAAkB,CAAA;CAAO,KACjH,OAAO,CAAC,IAAI,CAad,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { agentCommandEnvironment } from './agent-command-runner.js';
|
|
3
|
+
import { refreshAgentPlugins } from './agent-plugin-step.js';
|
|
4
|
+
import { packageIdentity } from './client-version.js';
|
|
5
|
+
/** The one update path: the newest release's own `skill install`. */
|
|
6
|
+
export const UPDATE_COMMAND = ['-y', '@12ui/design@latest', 'skill', 'install'];
|
|
7
|
+
const spawnInherited = (command, args, environment) => new Promise((resolve) => {
|
|
8
|
+
const child = spawn(command, [...args], {
|
|
9
|
+
env: environment,
|
|
10
|
+
shell: process.platform === 'win32',
|
|
11
|
+
stdio: ['ignore', 'inherit', 'inherit'],
|
|
12
|
+
});
|
|
13
|
+
child.on('error', () => resolve(null));
|
|
14
|
+
child.on('close', (code) => resolve(code));
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* `12ui update` runs `npx -y @12ui/design@latest skill install`: the newest
|
|
18
|
+
* release pins itself as the `12ui` on PATH (the same `persistCurrentCli` every
|
|
19
|
+
* install uses), refreshes every skill copy, rewrites the Codex plugin folder
|
|
20
|
+
* and re-adds the plugin wherever its bytes changed, and re-checks the Claude
|
|
21
|
+
* Code plugin. Its output is that install's own lines; it never prompts and
|
|
22
|
+
* never reads `OPENAI_API_KEY`. Then every Claude Code home with the plugin
|
|
23
|
+
* from 12ui-plugin runs `claude plugin marketplace update 12ui-plugin` and
|
|
24
|
+
* `claude plugin update 12ui-design@12ui-plugin` (the CLI entry passes the
|
|
25
|
+
* plugin context; without it this step is skipped). Between updates Claude
|
|
26
|
+
* Code refreshes the plugin by itself: its marketplace is set to auto-update.
|
|
27
|
+
*/
|
|
28
|
+
export const runUpdateCommand = async (dependencies = {}) => {
|
|
29
|
+
console.log(`Updating 12ui ${packageIdentity().version} to the newest release: npx ${UPDATE_COMMAND.join(' ')}`);
|
|
30
|
+
const exitCode = await (dependencies.spawner ?? spawnInherited)('npx', UPDATE_COMMAND, agentCommandEnvironment(dependencies.environment ?? process.env));
|
|
31
|
+
if (exitCode !== 0) {
|
|
32
|
+
throw new Error(`npx ${UPDATE_COMMAND.join(' ')} exited with ${exitCode ?? 'no exit code'}; the installed 12ui is unchanged`);
|
|
33
|
+
}
|
|
34
|
+
if (dependencies.agentPlugins) {
|
|
35
|
+
for (const line of await refreshAgentPlugins(dependencies.agentPlugins))
|
|
36
|
+
console.log(line);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=cli-update-command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-update-command.js","sourceRoot":"","sources":["../src/cli-update-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAA2B,MAAM,wBAAwB,CAAC;AACtF,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,qEAAqE;AACrE,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,SAAS,CAAU,CAAC;AAQzF,MAAM,cAAc,GAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;IAC5F,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE;QACtC,GAAG,EAAE,WAAW;QAChB,KAAK,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;QACnC,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC;KACxC,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACvC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,eAAgH,EAAE,EACnG,EAAE;IACjB,OAAO,CAAC,GAAG,CAAC,iBAAiB,eAAe,EAAE,CAAC,OAAO,+BAA+B,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjH,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,IAAI,cAAc,CAAC,CAC7D,KAAK,EACL,cAAc,EACd,uBAAuB,CAAC,YAAY,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,CACjE,CAAC;IACF,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,QAAQ,IAAI,cAAc,mCAAmC,CAAC,CAAC;IAChI,CAAC;IACD,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,MAAM,mBAAmB,CAAC,YAAY,CAAC,YAAY,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC,CAAC"}
|
package/dist/cli-usage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-usage.d.ts","sourceRoot":"","sources":["../src/cli-usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAkD9C,eAAO,MAAM,SAAS,
|
|
1
|
+
{"version":3,"file":"cli-usage.d.ts","sourceRoot":"","sources":["../src/cli-usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAkD9C,eAAO,MAAM,SAAS,QAuGsC,CAAC;AAE7D,iFAAiF;AACjF,eAAO,MAAM,uBAAuB,EAAE,SAAS,MAAM,EAER,CAAC;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAIhD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAgB9C,CAAC;AAEF,2EAA2E;AAC3E,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAI5C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAA2C,CAAC;AAEzF,gFAAgF;AAChF,eAAO,MAAM,eAAe,GAAI,QAAO,SAAS,MAAM,EAAoB,KAAG,GAAG,CAAC,MAAM,CAMtF,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,GAAI,GAAG,MAAM,SAAS,MAAM,EAAE,KAAG,SAAS,MAAM,EAczE,CAAC;AAEF,yEAAyE;AACzE,eAAO,MAAM,YAAY,GAAI,GAAG,MAAM,SAAS,MAAM,EAAE,KAAG,MAEzD,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM,SAAS,MAAM,EAAE,KAAG,MAaxD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GAAI,MAAM;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACzB,KAAG,UAGH,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,WAAW,GAAI,MAAM;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACzB,KAAG,KAEH,CAAC;AAEF,2FAA2F;AAC3F,eAAO,MAAM,UAAU,GAAI,UAAS,SAAS,MAAM,EAAO,KAAG,IAE5D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,KAAK,QAAO,KAExB,CAAC"}
|
package/dist/cli-usage.js
CHANGED
|
@@ -72,6 +72,7 @@ export const CLI_USAGE = `Usage:
|
|
|
72
72
|
12ui auth logout [--login-origin <url>]
|
|
73
73
|
12ui cli install
|
|
74
74
|
12ui cli status [--json]
|
|
75
|
+
12ui update
|
|
75
76
|
12ui skill install [--skill 12ui-design] [--client codex|claude-code|grok|cursor|antigravity|copilot] [--home <client-home>] [--login-origin <url>] [--key-name <name>] [--force] [--skip-auth]
|
|
76
77
|
12ui skill status [--skill 12ui-design] [--client codex|claude-code|grok|cursor|antigravity|copilot] [--home <client-home>] [--json]
|
|
77
78
|
12ui corpus status
|
package/dist/cli-usage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-usage.js","sourceRoot":"","sources":["../src/cli-usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH;;;;;;;;;;GAUG;AACH,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAErC,MAAM,CAAC,MAAM,SAAS,GAAG
|
|
1
|
+
{"version":3,"file":"cli-usage.js","sourceRoot":"","sources":["../src/cli-usage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH;;;;;;;;;;GAUG;AACH,MAAM,mBAAmB,GAAG,QAAQ,CAAC;AAErC,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAgCA,mBAAmB;0DACc,mBAAmB;;;oCAGzC,mBAAmB;;;;;;;;;;6DAUM,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC;2DAClC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC;;;sFAGL,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4DAqD1D,CAAC;AAE7D,iFAAiF;AACjF,MAAM,CAAC,MAAM,uBAAuB,GAAsB,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;KAC5E,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;KAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AAE9C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAsB;IACpD,sCAAsC;IACtC,6HAA6H;IAC7H,gDAAgD;CACjD,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,6BAA6B;IAC7B,iDAAiD;IACjD,0DAA0D;IAC1D,oDAAoD;IACpD,+FAA+F;IAC/F,yDAAyD;IACzD,2GAA2G;UACvG,qEAAqE;IACzE,+FAA+F;IAC/F,8DAA8D;IAC9D,oDAAoD;IACpD,kGAAkG;UAC9F,mCAAmC;IACvC,4FAA4F;IAC5F,iEAAiE;CAClE,CAAC;AAEF,2EAA2E;AAC3E,MAAM,CAAC,MAAM,eAAe,GAAsB;IAChD,GAAG,uBAAuB;IAC1B,GAAG,mBAAmB;IACtB,GAAG,iBAAiB;CACrB,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAsB,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAEzF,gFAAgF;AAChF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,QAA2B,eAAe,EAAe,EAAE;IACzF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,eAAe,CAAC,CAAC;IAC/C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,uBAAuB,CAAC;YAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAG,IAAuB,EAAqB,EAAE;IAC7E,0EAA0E;IAC1E,0EAA0E;IAC1E,2DAA2D;IAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClF,KAAK,IAAI,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACxD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,OAAO,CAAC;IACzC,CAAC;IACD,OAAO,uBAAuB,CAAC;AACjC,CAAC,CAAC;AAEF,yEAAyE;AACzE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAG,IAAuB,EAAU,EAAE,CAAC,CAClE,WAAW,aAAa,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1E,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,GAAG,IAAuB,EAAU,EAAE;IAChE,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpF,MAAM,IAAI,UAAU,CAClB,wBAAwB,KAAK,qBAAqB,KAAK,GAAG;cACtD,6CAA6C,EACjD,oBAAoB,CACrB,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,OAAO,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/E,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAI5B,EAAc,EAAE,CAAC,IAAI,UAAU,CAC9B,GAAG,IAAI,CAAC,MAAM,OAAO,WAAW,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,EAChD,IAAI,CAAC,IAAI,CACV,CAAC;AAEF,gFAAgF;AAChF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAI3B,EAAS,EAAE;IACV,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC,CAAC;AAEF,2FAA2F;AAC3F,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,UAA6B,EAAE,EAAQ,EAAE;IAClE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;AAC1E,CAAC,CAAC;AAEF;;;;GAIG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,GAAU,EAAE;IAC/B,MAAM,IAAI,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAC/C,CAAC,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { type AgentCommandRunner } from './agent-command-runner.js';
|
|
2
|
+
/**
|
|
3
|
+
* The 12ui plugin for Codex: the shared 12ui-design skill plus the hosted
|
|
4
|
+
* `12ui-workspace` server at design.12ui.com/mcp, which draws the Design
|
|
5
|
+
* workspace inline in a Codex thread. It is the plugin submitted to OpenAI
|
|
6
|
+
* (scripts/public-plugin/remote), installed under its proof identity
|
|
7
|
+
* `12ui@12ui-local` from a local marketplace the CLI writes.
|
|
8
|
+
*/
|
|
9
|
+
export declare const CODEX_PLUGIN_NAME = "12ui";
|
|
10
|
+
export declare const CODEX_MARKETPLACE_NAME = "12ui-local";
|
|
11
|
+
export declare const CODEX_PLUGIN_ID = "12ui@12ui-local";
|
|
12
|
+
/** The one folder every Codex home's marketplace points at. */
|
|
13
|
+
export declare const codexPluginSource: (dataRoot: string) => string;
|
|
14
|
+
/**
|
|
15
|
+
* Writes the plugin from the package's template and its own skill bytes, and
|
|
16
|
+
* replaces the folder only when the bytes changed, so a re-run touches nothing
|
|
17
|
+
* and a newer CLI's skill reaches every home through `codex plugin add`.
|
|
18
|
+
*/
|
|
19
|
+
export declare const materializeCodexPluginSource: (dataRoot: string) => Promise<{
|
|
20
|
+
source: string;
|
|
21
|
+
changed: boolean;
|
|
22
|
+
}>;
|
|
23
|
+
/** Whether the `codex` on PATH has `codex plugin marketplace add` (a capability probe, not a version). */
|
|
24
|
+
export declare const codexSupportsPlugins: (runner: AgentCommandRunner, environment: NodeJS.ProcessEnv) => Promise<boolean>;
|
|
25
|
+
export type CodexPluginStatus = {
|
|
26
|
+
status: 'installed' | 'current';
|
|
27
|
+
adopted: boolean;
|
|
28
|
+
listedSkillsDisabled: number;
|
|
29
|
+
} | {
|
|
30
|
+
status: 'other';
|
|
31
|
+
pluginId: string;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Installs 12ui@12ui-local into one Codex home. A `12ui-local` marketplace
|
|
35
|
+
* that points somewhere else (the owner's hand-made test install) is the same
|
|
36
|
+
* plugin: it is re-pointed at the CLI's folder so updates reach it. A `12ui`
|
|
37
|
+
* plugin enabled from any other marketplace (a future directory listing) is
|
|
38
|
+
* left alone and nothing is added beside it.
|
|
39
|
+
*/
|
|
40
|
+
export declare const installCodexPlugin: (args: {
|
|
41
|
+
home: string;
|
|
42
|
+
source: string;
|
|
43
|
+
runner: AgentCommandRunner;
|
|
44
|
+
environment: NodeJS.ProcessEnv;
|
|
45
|
+
}) => Promise<CodexPluginStatus>;
|
|
46
|
+
/** Whether this home's config.toml still has the 12ui-local marketplace, wherever it points. */
|
|
47
|
+
export declare const isCodexMarketplaceConfigured: (home: string) => Promise<boolean>;
|
|
48
|
+
/** Whether this home enables the plugin (status reporting; no process runs). */
|
|
49
|
+
export declare const isCodexPluginInstalled: (home: string) => Promise<boolean>;
|
|
50
|
+
/** Removes what `installCodexPlugin` added: the plugin, its marketplace and the marked disable blocks. */
|
|
51
|
+
export declare const removeCodexPlugin: (args: {
|
|
52
|
+
home: string;
|
|
53
|
+
runner: AgentCommandRunner;
|
|
54
|
+
environment: NodeJS.ProcessEnv;
|
|
55
|
+
}) => Promise<boolean>;
|
|
56
|
+
//# sourceMappingURL=codex-plugin-installer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-plugin-installer.d.ts","sourceRoot":"","sources":["../src/codex-plugin-installer.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,2BAA2B,CAAC;AAGnC;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,SAAS,CAAC;AACxC,eAAO,MAAM,sBAAsB,eAAe,CAAC;AACnD,eAAO,MAAM,eAAe,oBAAmD,CAAC;AAQhF,+DAA+D;AAC/D,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,KAAG,MAAgE,CAAC;AA+BtH;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAwBjH,CAAC;AAEF,0GAA0G;AAC1G,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,kBAAkB,EAC1B,aAAa,MAAM,CAAC,UAAU,KAC7B,OAAO,CAAC,OAAO,CAKjB,CAAC;AAsFF,MAAM,MAAM,iBAAiB,GACzB;IAAE,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAA;CAAE,GACnF;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1C;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,GAAU,MAAM;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,kBAAkB,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC;CAChC,KAAG,OAAO,CAAC,iBAAiB,CA2B5B,CAAC;AAEF,gGAAgG;AAChG,eAAO,MAAM,4BAA4B,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,OAAO,CAEhF,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,sBAAsB,GAAU,MAAM,MAAM,KAAG,OAAO,CAAC,OAAO,CAE1E,CAAC;AAEF,0GAA0G;AAC1G,eAAO,MAAM,iBAAiB,GAAU,MAAM;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,kBAAkB,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC;CAChC,KAAG,OAAO,CAAC,OAAO,CAelB,CAAC"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { cp, mkdir, readdir, readFile, rename, rm, stat, writeFile } from 'node:fs/promises';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { agentCommandEnvironment, commandFailure, } from './agent-command-runner.js';
|
|
6
|
+
import { disableCodexSkillFiles, removeMarkedCodexSkillBlocks } from './codex-skill-config.js';
|
|
7
|
+
/**
|
|
8
|
+
* The 12ui plugin for Codex: the shared 12ui-design skill plus the hosted
|
|
9
|
+
* `12ui-workspace` server at design.12ui.com/mcp, which draws the Design
|
|
10
|
+
* workspace inline in a Codex thread. It is the plugin submitted to OpenAI
|
|
11
|
+
* (scripts/public-plugin/remote), installed under its proof identity
|
|
12
|
+
* `12ui@12ui-local` from a local marketplace the CLI writes.
|
|
13
|
+
*/
|
|
14
|
+
export const CODEX_PLUGIN_NAME = '12ui';
|
|
15
|
+
export const CODEX_MARKETPLACE_NAME = '12ui-local';
|
|
16
|
+
export const CODEX_PLUGIN_ID = `${CODEX_PLUGIN_NAME}@${CODEX_MARKETPLACE_NAME}`;
|
|
17
|
+
/** The old directory-listed skills-only plugin, whose skill shares the name 12ui-design. */
|
|
18
|
+
const LISTED_SKILL_PLUGIN_CACHE = path.join('plugins', 'cache', 'openai-curated-remote', '12ui-design');
|
|
19
|
+
const templateRoot = () => fileURLToPath(new URL('../codex-plugin/', import.meta.url));
|
|
20
|
+
const bundledSkillRoot = () => fileURLToPath(new URL('../skills/12ui-design/', import.meta.url));
|
|
21
|
+
/** The one folder every Codex home's marketplace points at. */
|
|
22
|
+
export const codexPluginSource = (dataRoot) => path.join(dataRoot, 'codex-plugin', CODEX_PLUGIN_NAME);
|
|
23
|
+
const exists = async (target) => {
|
|
24
|
+
try {
|
|
25
|
+
await stat(target);
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
if (error.code === 'ENOENT')
|
|
30
|
+
return false;
|
|
31
|
+
throw error;
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const listFiles = async (root, relative = '') => {
|
|
35
|
+
const entries = await readdir(path.join(root, relative), { withFileTypes: true });
|
|
36
|
+
const nested = await Promise.all(entries.map(async (entry) => {
|
|
37
|
+
const child = path.join(relative, entry.name);
|
|
38
|
+
return entry.isDirectory() ? listFiles(root, child) : [child];
|
|
39
|
+
}));
|
|
40
|
+
return nested.flat().sort();
|
|
41
|
+
};
|
|
42
|
+
const sameTree = async (left, right) => {
|
|
43
|
+
if (!(await exists(left)) || !(await exists(right)))
|
|
44
|
+
return false;
|
|
45
|
+
const [leftFiles, rightFiles] = await Promise.all([listFiles(left), listFiles(right)]);
|
|
46
|
+
if (leftFiles.join('\n') !== rightFiles.join('\n'))
|
|
47
|
+
return false;
|
|
48
|
+
const same = await Promise.all(leftFiles.map(async (file) => ((await readFile(path.join(left, file))).equals(await readFile(path.join(right, file))))));
|
|
49
|
+
return same.every(Boolean);
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Writes the plugin from the package's template and its own skill bytes, and
|
|
53
|
+
* replaces the folder only when the bytes changed, so a re-run touches nothing
|
|
54
|
+
* and a newer CLI's skill reaches every home through `codex plugin add`.
|
|
55
|
+
*/
|
|
56
|
+
export const materializeCodexPluginSource = async (dataRoot) => {
|
|
57
|
+
const source = codexPluginSource(dataRoot);
|
|
58
|
+
const parent = path.dirname(source);
|
|
59
|
+
await mkdir(parent, { recursive: true });
|
|
60
|
+
const staging = path.join(parent, `.${CODEX_PLUGIN_NAME}-${randomUUID()}.tmp`);
|
|
61
|
+
try {
|
|
62
|
+
const template = templateRoot();
|
|
63
|
+
await mkdir(path.join(staging, '.codex-plugin'), { recursive: true });
|
|
64
|
+
await mkdir(path.join(staging, '.agents', 'plugins'), { recursive: true });
|
|
65
|
+
await cp(path.join(template, 'plugin.json'), path.join(staging, '.codex-plugin', 'plugin.json'));
|
|
66
|
+
await cp(path.join(template, 'mcp.json'), path.join(staging, '.mcp.json'));
|
|
67
|
+
await cp(path.join(template, 'marketplace.json'), path.join(staging, '.agents', 'plugins', 'marketplace.json'));
|
|
68
|
+
await cp(path.join(template, 'assets'), path.join(staging, 'assets'), { recursive: true });
|
|
69
|
+
await cp(bundledSkillRoot(), path.join(staging, 'skills', '12ui-design'), { recursive: true });
|
|
70
|
+
if (await sameTree(staging, source))
|
|
71
|
+
return { source, changed: false };
|
|
72
|
+
const previous = `${source}.${randomUUID()}.old`;
|
|
73
|
+
const hadPrevious = await exists(source);
|
|
74
|
+
if (hadPrevious)
|
|
75
|
+
await rename(source, previous);
|
|
76
|
+
await rename(staging, source);
|
|
77
|
+
if (hadPrevious)
|
|
78
|
+
await rm(previous, { recursive: true, force: true });
|
|
79
|
+
return { source, changed: true };
|
|
80
|
+
}
|
|
81
|
+
finally {
|
|
82
|
+
await rm(staging, { recursive: true, force: true });
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
/** Whether the `codex` on PATH has `codex plugin marketplace add` (a capability probe, not a version). */
|
|
86
|
+
export const codexSupportsPlugins = async (runner, environment) => ((await runner('codex', ['plugin', 'marketplace', 'add', '--help'], {
|
|
87
|
+
environment: agentCommandEnvironment(environment),
|
|
88
|
+
timeoutMs: 30_000,
|
|
89
|
+
})).exitCode === 0);
|
|
90
|
+
/** The two facts the installer needs from config.toml, read the way Codex writes them. */
|
|
91
|
+
const readCodexConfig = async (home) => {
|
|
92
|
+
let source = '';
|
|
93
|
+
try {
|
|
94
|
+
source = await readFile(path.join(home, 'config.toml'), 'utf8');
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
if (error.code !== 'ENOENT')
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
100
|
+
const state = { marketplaceSource: null, enabledPlugins: [] };
|
|
101
|
+
let table = '';
|
|
102
|
+
for (const raw of source.split(/\r?\n/)) {
|
|
103
|
+
const line = raw.trim();
|
|
104
|
+
// `[table]` and `[[array.of.tables]]` both start a new table: a key under
|
|
105
|
+
// `[[skills.config]]` never belongs to the `[plugins."…"]` table above it.
|
|
106
|
+
const header = /^\[(\[?)\s*([^[\]]+?)\s*\](\]?)\s*(?:#.*)?$/.exec(line);
|
|
107
|
+
if (header) {
|
|
108
|
+
table = header[1] === '[' && header[3] === ']' ? `[[${header[2]}]]` : header[2];
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
const entry = /^([A-Za-z_]+)\s*=\s*(.+)$/.exec(line);
|
|
112
|
+
if (!entry)
|
|
113
|
+
continue;
|
|
114
|
+
if (table === `marketplaces.${CODEX_MARKETPLACE_NAME}` && entry[1] === 'source') {
|
|
115
|
+
try {
|
|
116
|
+
state.marketplaceSource = JSON.parse(entry[2]);
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
state.marketplaceSource = entry[2];
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
const plugin = /^plugins\."([^"]+)"$/.exec(table);
|
|
123
|
+
if (plugin && entry[1] === 'enabled' && entry[2] === 'true')
|
|
124
|
+
state.enabledPlugins.push(plugin[1]);
|
|
125
|
+
}
|
|
126
|
+
return state;
|
|
127
|
+
};
|
|
128
|
+
/** The SKILL.md of every cached version of the old listed plugin. */
|
|
129
|
+
const listedSkillFiles = async (home) => {
|
|
130
|
+
const root = path.join(home, LISTED_SKILL_PLUGIN_CACHE);
|
|
131
|
+
if (!(await exists(root)))
|
|
132
|
+
return [];
|
|
133
|
+
const versions = (await readdir(root)).filter((name) => !name.startsWith('.')).sort();
|
|
134
|
+
const files = versions.map((version) => path.join(root, version, 'skills', '12ui-design', 'SKILL.md'));
|
|
135
|
+
const present = await Promise.all(files.map(exists));
|
|
136
|
+
return files.filter((_, index) => present[index]);
|
|
137
|
+
};
|
|
138
|
+
const pluginCache = async (home) => {
|
|
139
|
+
const root = path.join(home, 'plugins', 'cache', CODEX_MARKETPLACE_NAME, CODEX_PLUGIN_NAME);
|
|
140
|
+
if (!(await exists(root)))
|
|
141
|
+
return null;
|
|
142
|
+
const versions = (await readdir(root)).filter((name) => !name.startsWith('.')).sort();
|
|
143
|
+
return versions.length > 0 ? path.join(root, versions[versions.length - 1]) : null;
|
|
144
|
+
};
|
|
145
|
+
/**
|
|
146
|
+
* Codex rewrites config.toml with LF line endings: measured with codex-cli
|
|
147
|
+
* 0.159.3, `codex plugin marketplace add` turns a CRLF file into LF. A file
|
|
148
|
+
* that used CRLF throughout gets CRLF back after every Codex command, so an
|
|
149
|
+
* install and an uninstall leave the user's line endings as they found them.
|
|
150
|
+
*/
|
|
151
|
+
const keepingLineEndings = async (home, run) => {
|
|
152
|
+
const file = path.join(home, 'config.toml');
|
|
153
|
+
const before = await readFile(file, 'utf8').catch((error) => {
|
|
154
|
+
if (error.code === 'ENOENT')
|
|
155
|
+
return '';
|
|
156
|
+
throw error;
|
|
157
|
+
});
|
|
158
|
+
const crlf = before.includes('\r\n') && !/(^|[^\r])\n/.test(before);
|
|
159
|
+
try {
|
|
160
|
+
return await run();
|
|
161
|
+
}
|
|
162
|
+
finally {
|
|
163
|
+
if (crlf) {
|
|
164
|
+
const after = await readFile(file, 'utf8').catch(() => null);
|
|
165
|
+
const restored = after === null ? null : after.replace(/\r?\n/g, '\r\n');
|
|
166
|
+
if (restored !== null && restored !== after)
|
|
167
|
+
await writeFile(file, restored);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
/** One `codex` command against one home, keeping that home's config.toml line endings. */
|
|
172
|
+
const codexCommand = (args, commandArgs) => keepingLineEndings(args.home, () => args.runner('codex', commandArgs, {
|
|
173
|
+
environment: agentCommandEnvironment(args.environment, { CODEX_HOME: args.home }),
|
|
174
|
+
}));
|
|
175
|
+
/**
|
|
176
|
+
* Installs 12ui@12ui-local into one Codex home. A `12ui-local` marketplace
|
|
177
|
+
* that points somewhere else (the owner's hand-made test install) is the same
|
|
178
|
+
* plugin: it is re-pointed at the CLI's folder so updates reach it. A `12ui`
|
|
179
|
+
* plugin enabled from any other marketplace (a future directory listing) is
|
|
180
|
+
* left alone and nothing is added beside it.
|
|
181
|
+
*/
|
|
182
|
+
export const installCodexPlugin = async (args) => {
|
|
183
|
+
const before = await readCodexConfig(args.home);
|
|
184
|
+
const other = before.enabledPlugins.find((id) => id.startsWith(`${CODEX_PLUGIN_NAME}@`) && id !== CODEX_PLUGIN_ID);
|
|
185
|
+
if (other)
|
|
186
|
+
return { status: 'other', pluginId: other };
|
|
187
|
+
let changed = false;
|
|
188
|
+
const adopted = before.marketplaceSource !== null && path.resolve(before.marketplaceSource) !== path.resolve(args.source);
|
|
189
|
+
if (adopted) {
|
|
190
|
+
const removed = await codexCommand(args, ['plugin', 'marketplace', 'remove', CODEX_MARKETPLACE_NAME]);
|
|
191
|
+
if (removed.exitCode !== 0)
|
|
192
|
+
throw commandFailure(`codex plugin marketplace remove ${CODEX_MARKETPLACE_NAME}`, removed);
|
|
193
|
+
}
|
|
194
|
+
if (before.marketplaceSource === null || adopted) {
|
|
195
|
+
const added = await codexCommand(args, ['plugin', 'marketplace', 'add', args.source, '--json']);
|
|
196
|
+
if (added.exitCode !== 0)
|
|
197
|
+
throw commandFailure(`codex plugin marketplace add ${args.source}`, added);
|
|
198
|
+
changed = true;
|
|
199
|
+
}
|
|
200
|
+
const cache = await pluginCache(args.home);
|
|
201
|
+
if (!before.enabledPlugins.includes(CODEX_PLUGIN_ID) || !cache || !(await sameTree(cache, args.source))) {
|
|
202
|
+
const added = await codexCommand(args, ['plugin', 'add', CODEX_PLUGIN_ID, '--json']);
|
|
203
|
+
if (added.exitCode !== 0)
|
|
204
|
+
throw commandFailure(`codex plugin add ${CODEX_PLUGIN_ID}`, added);
|
|
205
|
+
changed = true;
|
|
206
|
+
}
|
|
207
|
+
if (!(await readCodexConfig(args.home)).enabledPlugins.includes(CODEX_PLUGIN_ID)) {
|
|
208
|
+
throw new Error(`codex plugin add ${CODEX_PLUGIN_ID} reported success, but ${args.home}/config.toml does not enable it`);
|
|
209
|
+
}
|
|
210
|
+
const disabled = await disableCodexSkillFiles(args.home, await listedSkillFiles(args.home));
|
|
211
|
+
if (disabled.length > 0)
|
|
212
|
+
changed = true;
|
|
213
|
+
return { status: changed ? 'installed' : 'current', adopted, listedSkillsDisabled: disabled.length };
|
|
214
|
+
};
|
|
215
|
+
/** Whether this home's config.toml still has the 12ui-local marketplace, wherever it points. */
|
|
216
|
+
export const isCodexMarketplaceConfigured = async (home) => ((await readCodexConfig(home)).marketplaceSource !== null);
|
|
217
|
+
/** Whether this home enables the plugin (status reporting; no process runs). */
|
|
218
|
+
export const isCodexPluginInstalled = async (home) => ((await readCodexConfig(home)).enabledPlugins.includes(CODEX_PLUGIN_ID));
|
|
219
|
+
/** Removes what `installCodexPlugin` added: the plugin, its marketplace and the marked disable blocks. */
|
|
220
|
+
export const removeCodexPlugin = async (args) => {
|
|
221
|
+
const state = await readCodexConfig(args.home);
|
|
222
|
+
let removed = false;
|
|
223
|
+
if (state.enabledPlugins.includes(CODEX_PLUGIN_ID) || await pluginCache(args.home)) {
|
|
224
|
+
const result = await codexCommand(args, ['plugin', 'remove', CODEX_PLUGIN_ID]);
|
|
225
|
+
if (result.exitCode !== 0)
|
|
226
|
+
throw commandFailure(`codex plugin remove ${CODEX_PLUGIN_ID}`, result);
|
|
227
|
+
removed = true;
|
|
228
|
+
}
|
|
229
|
+
if (state.marketplaceSource !== null) {
|
|
230
|
+
const result = await codexCommand(args, ['plugin', 'marketplace', 'remove', CODEX_MARKETPLACE_NAME]);
|
|
231
|
+
if (result.exitCode !== 0)
|
|
232
|
+
throw commandFailure(`codex plugin marketplace remove ${CODEX_MARKETPLACE_NAME}`, result);
|
|
233
|
+
removed = true;
|
|
234
|
+
}
|
|
235
|
+
if (await removeMarkedCodexSkillBlocks(args.home) > 0)
|
|
236
|
+
removed = true;
|
|
237
|
+
return removed;
|
|
238
|
+
};
|
|
239
|
+
//# sourceMappingURL=codex-plugin-installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-plugin-installer.js","sourceRoot":"","sources":["../src/codex-plugin-installer.ts"],"names":[],"mappings":"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"}
|