@pleri/olam-cli 0.1.36 → 0.1.37
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/dist/commands/__tests__/diagnose.test.d.ts +9 -0
- package/dist/commands/__tests__/diagnose.test.d.ts.map +1 -0
- package/dist/commands/__tests__/diagnose.test.js +108 -0
- package/dist/commands/__tests__/diagnose.test.js.map +1 -0
- package/dist/commands/__tests__/update.test.d.ts +7 -0
- package/dist/commands/__tests__/update.test.d.ts.map +1 -0
- package/dist/commands/__tests__/update.test.js +224 -0
- package/dist/commands/__tests__/update.test.js.map +1 -0
- package/dist/commands/diagnose.d.ts +20 -0
- package/dist/commands/diagnose.d.ts.map +1 -0
- package/dist/commands/diagnose.js +161 -0
- package/dist/commands/diagnose.js.map +1 -0
- package/dist/commands/update.d.ts +65 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +278 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/image-digests.json +3 -3
- package/dist/index.js +629 -115
- package/dist/index.js.map +1 -1
- package/dist/lib/__tests__/symlink-reconcile.test.d.ts +2 -0
- package/dist/lib/__tests__/symlink-reconcile.test.d.ts.map +1 -0
- package/dist/lib/__tests__/symlink-reconcile.test.js +106 -0
- package/dist/lib/__tests__/symlink-reconcile.test.js.map +1 -0
- package/dist/lib/symlink-reconcile.d.ts +32 -0
- package/dist/lib/symlink-reconcile.d.ts.map +1 -0
- package/dist/lib/symlink-reconcile.js +80 -0
- package/dist/lib/symlink-reconcile.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* olam update — Friendly wrapper around `npm install -g @pleri/olam-cli@<channel>`.
|
|
3
|
+
*
|
|
4
|
+
* F1: core install flow with snapshot-prev → install → restore-on-failure (D24)
|
|
5
|
+
* + scan-and-reconcile skill symlinks (T22/OQ29).
|
|
6
|
+
* F2: --to=<ver>, --rollback, --check, --channel=<ch>.
|
|
7
|
+
* F3: --freeze, --force, upgrade_blocked field check.
|
|
8
|
+
*
|
|
9
|
+
* T23 note: self-replace while running is harmless on POSIX — the OS keeps the
|
|
10
|
+
* old inode open until exit; the new binary is a separate inode. No special
|
|
11
|
+
* handling needed.
|
|
12
|
+
*/
|
|
13
|
+
import type { Command } from 'commander';
|
|
14
|
+
import { reconcileSkillSymlinks } from '../lib/symlink-reconcile.js';
|
|
15
|
+
export interface ExecResult {
|
|
16
|
+
readonly exitCode: number;
|
|
17
|
+
readonly stdout: string;
|
|
18
|
+
readonly stderr: string;
|
|
19
|
+
}
|
|
20
|
+
export type ExecFn = (cmd: string) => ExecResult;
|
|
21
|
+
export declare function getCurrentVersion(_exec?: ExecFn): string | null;
|
|
22
|
+
export declare function readLastStable(file?: string): string | null;
|
|
23
|
+
export declare function writeLastStable(version: string, file?: string): void;
|
|
24
|
+
export interface UpdateOptions {
|
|
25
|
+
readonly channel?: string;
|
|
26
|
+
readonly quiet?: boolean;
|
|
27
|
+
readonly force?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface UpdateResult {
|
|
30
|
+
readonly action: 'installed' | 'restored' | 'failed';
|
|
31
|
+
readonly version?: string;
|
|
32
|
+
readonly prevVersion?: string;
|
|
33
|
+
readonly exitCode: 0 | 11;
|
|
34
|
+
readonly symlinks?: {
|
|
35
|
+
added: string[];
|
|
36
|
+
removed: string[];
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/** Exit code 10: `--check` returns "already on latest". */
|
|
40
|
+
export interface CheckResult {
|
|
41
|
+
readonly action: 'already-current' | 'update-available';
|
|
42
|
+
readonly current: string | null;
|
|
43
|
+
readonly latest: string | null;
|
|
44
|
+
readonly exitCode: 0 | 10;
|
|
45
|
+
}
|
|
46
|
+
/** Exit code 14: `--rollback` with no cache. */
|
|
47
|
+
export interface RollbackResult {
|
|
48
|
+
readonly action: 'rolled-back' | 'nothing-to-rollback' | 'already-at-cached' | 'failed';
|
|
49
|
+
readonly restoredVersion?: string;
|
|
50
|
+
readonly exitCode: 0 | 11 | 14;
|
|
51
|
+
}
|
|
52
|
+
export type WriteConfigFn = (channel: string) => Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Check whether the published package has upgrade_blocked: true in its package.json.
|
|
55
|
+
* Returns true when the field is present and truthy; false otherwise (including on error).
|
|
56
|
+
*/
|
|
57
|
+
export declare function isUpgradeBlocked(channelOrVersion: string, _exec?: ExecFn): boolean;
|
|
58
|
+
export type ReadConfigFn = () => Promise<{
|
|
59
|
+
channel?: string;
|
|
60
|
+
} | null>;
|
|
61
|
+
export declare function doUpdate(opts: UpdateOptions, _exec?: ExecFn, _reconcile?: typeof reconcileSkillSymlinks, _readConfig?: ReadConfigFn, _getNpmRoot?: ExecFn): Promise<UpdateResult>;
|
|
62
|
+
export declare function doCheck(_exec?: ExecFn): Promise<CheckResult>;
|
|
63
|
+
export declare function doRollback(_exec?: ExecFn, _reconcile?: typeof reconcileSkillSymlinks, _getNpmRoot?: ExecFn): Promise<RollbackResult>;
|
|
64
|
+
export declare function registerUpdate(program: Command): void;
|
|
65
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* olam update — Friendly wrapper around `npm install -g @pleri/olam-cli@<channel>`.
|
|
3
|
+
*
|
|
4
|
+
* F1: core install flow with snapshot-prev → install → restore-on-failure (D24)
|
|
5
|
+
* + scan-and-reconcile skill symlinks (T22/OQ29).
|
|
6
|
+
* F2: --to=<ver>, --rollback, --check, --channel=<ch>.
|
|
7
|
+
* F3: --freeze, --force, upgrade_blocked field check.
|
|
8
|
+
*
|
|
9
|
+
* T23 note: self-replace while running is harmless on POSIX — the OS keeps the
|
|
10
|
+
* old inode open until exit; the new binary is a separate inode. No special
|
|
11
|
+
* handling needed.
|
|
12
|
+
*/
|
|
13
|
+
import * as fs from 'node:fs';
|
|
14
|
+
import * as os from 'node:os';
|
|
15
|
+
import * as path from 'node:path';
|
|
16
|
+
import { execSync } from 'node:child_process';
|
|
17
|
+
import pc from 'picocolors';
|
|
18
|
+
import { reconcileSkillSymlinks } from '../lib/symlink-reconcile.js';
|
|
19
|
+
const PACKAGE_NAME = '@pleri/olam-cli';
|
|
20
|
+
const CACHE_DIR = path.join(os.homedir(), '.olam', 'cache');
|
|
21
|
+
const LOG_DIR = path.join(os.homedir(), '.olam', 'log');
|
|
22
|
+
const LAST_STABLE_FILE = path.join(CACHE_DIR, 'last-stable.txt');
|
|
23
|
+
function defaultExec(cmd) {
|
|
24
|
+
try {
|
|
25
|
+
const stdout = execSync(cmd, { encoding: 'utf-8', stdio: ['ignore', 'pipe', 'pipe'] });
|
|
26
|
+
return { exitCode: 0, stdout, stderr: '' };
|
|
27
|
+
}
|
|
28
|
+
catch (err) {
|
|
29
|
+
const e = err;
|
|
30
|
+
return { exitCode: e.status ?? 1, stdout: e.stdout ?? '', stderr: e.stderr ?? '' };
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export function getCurrentVersion(_exec = defaultExec) {
|
|
34
|
+
const result = _exec(`npm ls -g ${PACKAGE_NAME} --json --depth=0`);
|
|
35
|
+
if (result.exitCode !== 0)
|
|
36
|
+
return null;
|
|
37
|
+
try {
|
|
38
|
+
const parsed = JSON.parse(result.stdout);
|
|
39
|
+
return parsed.dependencies?.[PACKAGE_NAME]?.version ?? null;
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export function readLastStable(file = LAST_STABLE_FILE) {
|
|
46
|
+
try {
|
|
47
|
+
const v = fs.readFileSync(file, 'utf-8').trim();
|
|
48
|
+
return v || null;
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export function writeLastStable(version, file = LAST_STABLE_FILE) {
|
|
55
|
+
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
56
|
+
fs.writeFileSync(file, version, { mode: 0o644 });
|
|
57
|
+
}
|
|
58
|
+
function logUpdateFailure(stderr) {
|
|
59
|
+
const ts = new Date().toISOString().slice(0, 10);
|
|
60
|
+
const logFile = path.join(LOG_DIR, `update-${ts}.log`);
|
|
61
|
+
try {
|
|
62
|
+
fs.mkdirSync(LOG_DIR, { recursive: true });
|
|
63
|
+
fs.appendFileSync(logFile, `[update-failure ${new Date().toISOString()}]\n${stderr}\n`, 'utf-8');
|
|
64
|
+
}
|
|
65
|
+
catch { /* best-effort */ }
|
|
66
|
+
}
|
|
67
|
+
/** Allowlist for channel/version values before shell interpolation (HIGH fix). */
|
|
68
|
+
const SAFE_VERSION_RE = /^[a-zA-Z0-9._-]{1,64}$/;
|
|
69
|
+
/**
|
|
70
|
+
* Check whether the published package has upgrade_blocked: true in its package.json.
|
|
71
|
+
* Returns true when the field is present and truthy; false otherwise (including on error).
|
|
72
|
+
*/
|
|
73
|
+
export function isUpgradeBlocked(channelOrVersion, _exec = defaultExec) {
|
|
74
|
+
if (!SAFE_VERSION_RE.test(channelOrVersion))
|
|
75
|
+
return false;
|
|
76
|
+
const result = _exec(`npm view ${PACKAGE_NAME}@${channelOrVersion} olam.upgrade_blocked --json`);
|
|
77
|
+
if (result.exitCode !== 0)
|
|
78
|
+
return false;
|
|
79
|
+
try {
|
|
80
|
+
const val = JSON.parse(result.stdout.trim());
|
|
81
|
+
return val === true;
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
export async function doUpdate(opts, _exec = defaultExec, _reconcile = reconcileSkillSymlinks, _readConfig, _getNpmRoot = defaultExec) {
|
|
88
|
+
const readConfig = _readConfig ?? (async () => {
|
|
89
|
+
const { readMachineConfig } = await import('@olam/core/src/config/machine-schema.js');
|
|
90
|
+
return readMachineConfig();
|
|
91
|
+
});
|
|
92
|
+
const config = await readConfig();
|
|
93
|
+
const channel = opts.channel ?? config?.channel ?? 'stable';
|
|
94
|
+
const quiet = opts.quiet ?? false;
|
|
95
|
+
const force = opts.force ?? false;
|
|
96
|
+
// Allowlist channel/version before any shell interpolation (HIGH security fix)
|
|
97
|
+
if (!SAFE_VERSION_RE.test(channel)) {
|
|
98
|
+
if (!quiet)
|
|
99
|
+
console.error(`Invalid channel/version: ${channel}`);
|
|
100
|
+
return { action: 'failed', exitCode: 11 };
|
|
101
|
+
}
|
|
102
|
+
// F3: respect auto_update: false (frozen) unless --force
|
|
103
|
+
if (!force && config && config.auto_update === false) {
|
|
104
|
+
if (!quiet) {
|
|
105
|
+
console.log('Updates frozen. Run `olam update --force` to override or `olam update --freeze` to manage.');
|
|
106
|
+
}
|
|
107
|
+
return { action: 'failed', exitCode: 11 };
|
|
108
|
+
}
|
|
109
|
+
// F3: check upgrade_blocked on target version (best-effort; don't block on error)
|
|
110
|
+
if (!force) {
|
|
111
|
+
const blocked = isUpgradeBlocked(channel, _exec);
|
|
112
|
+
if (blocked) {
|
|
113
|
+
if (!quiet) {
|
|
114
|
+
console.error(`Version @${channel} has upgrade_blocked: true. Run with --force to override.`);
|
|
115
|
+
}
|
|
116
|
+
return { action: 'failed', exitCode: 11 };
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
// Snapshot current version before any mutation (D24)
|
|
120
|
+
const prevVersion = getCurrentVersion(_exec);
|
|
121
|
+
if (prevVersion) {
|
|
122
|
+
writeLastStable(prevVersion);
|
|
123
|
+
}
|
|
124
|
+
if (!quiet) {
|
|
125
|
+
console.log(pc.cyan(`Installing ${PACKAGE_NAME}@${channel}…`));
|
|
126
|
+
}
|
|
127
|
+
const installResult = _exec(`npm install -g ${PACKAGE_NAME}@${channel}`);
|
|
128
|
+
if (installResult.exitCode !== 0) {
|
|
129
|
+
logUpdateFailure(installResult.stderr);
|
|
130
|
+
if (!quiet) {
|
|
131
|
+
console.error(pc.red('Update failed.'));
|
|
132
|
+
}
|
|
133
|
+
// Auto-restore (D24)
|
|
134
|
+
const prev = readLastStable();
|
|
135
|
+
if (prev) {
|
|
136
|
+
if (!quiet) {
|
|
137
|
+
console.log(pc.yellow(`Restoring to ${prev}…`));
|
|
138
|
+
}
|
|
139
|
+
const restoreResult = _exec(`npm install -g ${PACKAGE_NAME}@${prev}`);
|
|
140
|
+
if (restoreResult.exitCode !== 0) {
|
|
141
|
+
if (!quiet) {
|
|
142
|
+
console.error(pc.red(`Restore also failed. Run: npm install -g ${PACKAGE_NAME}@${prev} manually.`));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
else if (!quiet) {
|
|
146
|
+
console.log(pc.yellow(`Restored to ${prev}.`));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
else if (!quiet) {
|
|
150
|
+
console.error(pc.red('No previous version cached; cannot auto-restore.'));
|
|
151
|
+
}
|
|
152
|
+
return { action: 'restored', prevVersion: prev ?? undefined, exitCode: 11 };
|
|
153
|
+
}
|
|
154
|
+
// Success path: get new version + reconcile symlinks
|
|
155
|
+
const newVersion = getCurrentVersion(_exec) ?? undefined;
|
|
156
|
+
if (!quiet && newVersion) {
|
|
157
|
+
console.log(pc.green(`Updated to ${newVersion}.`));
|
|
158
|
+
}
|
|
159
|
+
// Scan-and-reconcile skill symlinks (T22/OQ29)
|
|
160
|
+
const npmRootResult = _getNpmRoot('npm root -g');
|
|
161
|
+
let symlinkResult = { added: [], removed: [] };
|
|
162
|
+
if (npmRootResult.exitCode === 0) {
|
|
163
|
+
const npmRoot = npmRootResult.stdout.trim();
|
|
164
|
+
const npmSkillsDir = path.join(npmRoot, '@pleri', 'olam-cli', 'plugin', 'skills');
|
|
165
|
+
const claudeSkillsDir = path.join(os.homedir(), '.claude', 'skills');
|
|
166
|
+
const rec = _reconcile(npmSkillsDir, claudeSkillsDir);
|
|
167
|
+
symlinkResult = { added: rec.added, removed: rec.removed };
|
|
168
|
+
if (!quiet && (rec.added.length > 0 || rec.removed.length > 0)) {
|
|
169
|
+
if (rec.added.length > 0) {
|
|
170
|
+
console.log(pc.dim(`Skills added: ${rec.added.join(', ')}`));
|
|
171
|
+
}
|
|
172
|
+
if (rec.removed.length > 0) {
|
|
173
|
+
console.log(pc.dim(`Skills removed (dangling): ${rec.removed.join(', ')}`));
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return {
|
|
178
|
+
action: 'installed',
|
|
179
|
+
version: newVersion,
|
|
180
|
+
prevVersion: prevVersion ?? undefined,
|
|
181
|
+
exitCode: 0,
|
|
182
|
+
symlinks: symlinkResult,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
export async function doCheck(_exec = defaultExec) {
|
|
186
|
+
const current = getCurrentVersion(_exec);
|
|
187
|
+
const viewResult = _exec(`npm view ${PACKAGE_NAME} dist-tags.stable`);
|
|
188
|
+
const latest = viewResult.exitCode === 0 ? viewResult.stdout.trim() || null : null;
|
|
189
|
+
if (current && latest && current === latest) {
|
|
190
|
+
return { action: 'already-current', current, latest, exitCode: 10 };
|
|
191
|
+
}
|
|
192
|
+
return { action: 'update-available', current, latest, exitCode: 0 };
|
|
193
|
+
}
|
|
194
|
+
export async function doRollback(_exec = defaultExec, _reconcile = reconcileSkillSymlinks, _getNpmRoot = defaultExec) {
|
|
195
|
+
const prev = readLastStable();
|
|
196
|
+
if (!prev) {
|
|
197
|
+
return { action: 'nothing-to-rollback', exitCode: 14 };
|
|
198
|
+
}
|
|
199
|
+
// OQ26: if last-stable.txt already equals the current version → already rolled back
|
|
200
|
+
const current = getCurrentVersion(_exec);
|
|
201
|
+
if (current && current === prev) {
|
|
202
|
+
return { action: 'already-at-cached', restoredVersion: prev, exitCode: 0 };
|
|
203
|
+
}
|
|
204
|
+
const result = _exec(`npm install -g ${PACKAGE_NAME}@${prev}`);
|
|
205
|
+
if (result.exitCode !== 0) {
|
|
206
|
+
return { action: 'failed', restoredVersion: prev, exitCode: 11 };
|
|
207
|
+
}
|
|
208
|
+
// Reconcile symlinks after restore
|
|
209
|
+
const npmRootResult = _getNpmRoot('npm root -g');
|
|
210
|
+
if (npmRootResult.exitCode === 0) {
|
|
211
|
+
const npmRoot = npmRootResult.stdout.trim();
|
|
212
|
+
_reconcile(path.join(npmRoot, '@pleri', 'olam-cli', 'plugin', 'skills'), path.join(os.homedir(), '.claude', 'skills'));
|
|
213
|
+
}
|
|
214
|
+
return { action: 'rolled-back', restoredVersion: prev, exitCode: 0 };
|
|
215
|
+
}
|
|
216
|
+
export function registerUpdate(program) {
|
|
217
|
+
program
|
|
218
|
+
.command('update')
|
|
219
|
+
.description('Update @pleri/olam-cli to the latest version on the configured channel')
|
|
220
|
+
.option('--to <version>', 'Install a specific version')
|
|
221
|
+
.option('--rollback', 'Restore the previously installed version')
|
|
222
|
+
.option('--check', 'Check if a newer version is available (read-only)')
|
|
223
|
+
.option('--channel <channel>', 'Switch to channel and install (stable|beta|edge)')
|
|
224
|
+
.option('--freeze', 'Disable automatic updates (sets auto_update: false)')
|
|
225
|
+
.option('--force', 'Override freeze and upgrade_blocked checks')
|
|
226
|
+
.option('--quiet', 'Suppress output')
|
|
227
|
+
.action(async (opts) => {
|
|
228
|
+
if (opts.freeze) {
|
|
229
|
+
const { readMachineConfig, writeMachineConfig, MachineConfigSchema } = await import('@olam/core/src/config/machine-schema.js');
|
|
230
|
+
const cfg = readMachineConfig() ?? MachineConfigSchema.parse({});
|
|
231
|
+
writeMachineConfig({ ...cfg, auto_update: false });
|
|
232
|
+
if (!opts.quiet)
|
|
233
|
+
console.log('Updates frozen. Run `olam update --force` to override.');
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
if (opts.check) {
|
|
237
|
+
const r = await doCheck();
|
|
238
|
+
if (!opts.quiet) {
|
|
239
|
+
if (r.action === 'already-current') {
|
|
240
|
+
console.log(`Already on latest: ${r.current}`);
|
|
241
|
+
}
|
|
242
|
+
else {
|
|
243
|
+
console.log(`Current: ${r.current ?? 'unknown'}, Latest: ${r.latest ?? 'unknown'}`);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
process.exitCode = r.exitCode;
|
|
247
|
+
return;
|
|
248
|
+
}
|
|
249
|
+
if (opts.rollback) {
|
|
250
|
+
const r = await doRollback();
|
|
251
|
+
if (!opts.quiet) {
|
|
252
|
+
if (r.action === 'nothing-to-rollback') {
|
|
253
|
+
console.error('Nothing to roll back. Use --to=<version> for a specific target.');
|
|
254
|
+
}
|
|
255
|
+
else if (r.action === 'already-at-cached') {
|
|
256
|
+
console.log(`Already at cached version ${r.restoredVersion}. Use --to=<v> for older targets.`);
|
|
257
|
+
}
|
|
258
|
+
else if (r.action === 'rolled-back') {
|
|
259
|
+
console.log(`Rolled back to ${r.restoredVersion}.`);
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
console.error(`Rollback failed.`);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
process.exitCode = r.exitCode;
|
|
266
|
+
return;
|
|
267
|
+
}
|
|
268
|
+
if (opts.channel) {
|
|
269
|
+
// Write config then install
|
|
270
|
+
const { readMachineConfig, writeMachineConfig, MachineConfigSchema } = await import('@olam/core/src/config/machine-schema.js');
|
|
271
|
+
const cfg = readMachineConfig() ?? MachineConfigSchema.parse({});
|
|
272
|
+
writeMachineConfig({ ...cfg, channel: opts.channel });
|
|
273
|
+
}
|
|
274
|
+
const result = await doUpdate({ channel: opts.to ?? opts.channel, quiet: opts.quiet, force: opts.force });
|
|
275
|
+
process.exitCode = result.exitCode;
|
|
276
|
+
});
|
|
277
|
+
}
|
|
278
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
|
package/dist/image-digests.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"auth": "sha256:4e2ea22c5ef026ecf7b10892fbe381384b32e83636962d86d9ab1fc572972f8e",
|
|
3
|
-
"devbox": "sha256:
|
|
4
|
-
"host-cp": "sha256:
|
|
3
|
+
"devbox": "sha256:78fd37ed04b1be8fb8dff51d1fed076a795cdb2a172c8d90f4dbdfd713350154",
|
|
4
|
+
"host-cp": "sha256:25788b159a70a543ed79cfb68b4d935006379ed8bfcdebb422fce7f2da43b785",
|
|
5
5
|
"$schema_version": 1,
|
|
6
|
-
"$published_version": "0.1.
|
|
6
|
+
"$published_version": "0.1.37",
|
|
7
7
|
"$registry": "ghcr.io/pleri"
|
|
8
8
|
}
|