@openreef/cli 0.3.5 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/README.md +48 -11
  2. package/dist/commands/diff.d.ts +9 -0
  3. package/dist/commands/diff.d.ts.map +1 -0
  4. package/dist/commands/diff.js +34 -0
  5. package/dist/commands/diff.js.map +1 -0
  6. package/dist/commands/export.d.ts +6 -0
  7. package/dist/commands/export.d.ts.map +1 -0
  8. package/dist/commands/export.js +70 -0
  9. package/dist/commands/export.js.map +1 -0
  10. package/dist/commands/install.d.ts +3 -0
  11. package/dist/commands/install.d.ts.map +1 -1
  12. package/dist/commands/install.js +110 -30
  13. package/dist/commands/install.js.map +1 -1
  14. package/dist/commands/lock.d.ts +6 -0
  15. package/dist/commands/lock.d.ts.map +1 -0
  16. package/dist/commands/lock.js +39 -0
  17. package/dist/commands/lock.js.map +1 -0
  18. package/dist/commands/logs.d.ts.map +1 -1
  19. package/dist/commands/logs.js +261 -13
  20. package/dist/commands/logs.js.map +1 -1
  21. package/dist/commands/publish.d.ts +8 -0
  22. package/dist/commands/publish.d.ts.map +1 -0
  23. package/dist/commands/publish.js +146 -0
  24. package/dist/commands/publish.js.map +1 -0
  25. package/dist/commands/uninstall.d.ts.map +1 -1
  26. package/dist/commands/uninstall.js +3 -2
  27. package/dist/commands/uninstall.js.map +1 -1
  28. package/dist/commands/update.d.ts +3 -0
  29. package/dist/commands/update.d.ts.map +1 -1
  30. package/dist/commands/update.js +112 -216
  31. package/dist/commands/update.js.map +1 -1
  32. package/dist/commands/validate.d.ts +1 -0
  33. package/dist/commands/validate.d.ts.map +1 -1
  34. package/dist/commands/validate.js +183 -14
  35. package/dist/commands/validate.js.map +1 -1
  36. package/dist/core/config-patcher.d.ts +11 -1
  37. package/dist/core/config-patcher.d.ts.map +1 -1
  38. package/dist/core/config-patcher.js +24 -7
  39. package/dist/core/config-patcher.js.map +1 -1
  40. package/dist/core/diff-engine.d.ts +21 -0
  41. package/dist/core/diff-engine.d.ts.map +1 -0
  42. package/dist/core/diff-engine.js +140 -0
  43. package/dist/core/diff-engine.js.map +1 -0
  44. package/dist/core/gateway-client.d.ts.map +1 -1
  45. package/dist/core/gateway-client.js +2 -1
  46. package/dist/core/gateway-client.js.map +1 -1
  47. package/dist/core/github-api.d.ts +37 -0
  48. package/dist/core/github-api.d.ts.map +1 -0
  49. package/dist/core/github-api.js +163 -0
  50. package/dist/core/github-api.js.map +1 -0
  51. package/dist/core/registry.d.ts +61 -0
  52. package/dist/core/registry.d.ts.map +1 -0
  53. package/dist/core/registry.js +255 -0
  54. package/dist/core/registry.js.map +1 -0
  55. package/dist/core/skills-registry.d.ts +32 -0
  56. package/dist/core/skills-registry.d.ts.map +1 -0
  57. package/dist/core/skills-registry.js +186 -0
  58. package/dist/core/skills-registry.js.map +1 -0
  59. package/dist/core/state-manager.d.ts +3 -0
  60. package/dist/core/state-manager.d.ts.map +1 -1
  61. package/dist/core/state-manager.js +55 -2
  62. package/dist/core/state-manager.js.map +1 -1
  63. package/dist/core/template-interpolator.d.ts +6 -0
  64. package/dist/core/template-interpolator.d.ts.map +1 -1
  65. package/dist/core/template-interpolator.js +14 -0
  66. package/dist/core/template-interpolator.js.map +1 -1
  67. package/dist/index.d.ts +2 -1
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +292 -186
  70. package/dist/index.js.map +1 -1
  71. package/dist/types/lockfile.d.ts +9 -0
  72. package/dist/types/lockfile.d.ts.map +1 -0
  73. package/dist/types/lockfile.js +2 -0
  74. package/dist/types/lockfile.js.map +1 -0
  75. package/dist/types/state.d.ts +4 -0
  76. package/dist/types/state.d.ts.map +1 -1
  77. package/dist/utils/download.d.ts +18 -0
  78. package/dist/utils/download.d.ts.map +1 -0
  79. package/dist/utils/download.js +72 -0
  80. package/dist/utils/download.js.map +1 -0
  81. package/dist/utils/plan-display.d.ts +3 -0
  82. package/dist/utils/plan-display.d.ts.map +1 -0
  83. package/dist/utils/plan-display.js +80 -0
  84. package/dist/utils/plan-display.js.map +1 -0
  85. package/dist/utils/semver.d.ts +12 -0
  86. package/dist/utils/semver.d.ts.map +1 -0
  87. package/dist/utils/semver.js +82 -0
  88. package/dist/utils/semver.js.map +1 -0
  89. package/dist/utils/tarball.d.ts +20 -7
  90. package/dist/utils/tarball.d.ts.map +1 -1
  91. package/dist/utils/tarball.js +36 -9
  92. package/dist/utils/tarball.js.map +1 -1
  93. package/dist/version.d.ts +2 -0
  94. package/dist/version.d.ts.map +1 -0
  95. package/dist/version.js +5 -0
  96. package/dist/version.js.map +1 -0
  97. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../../src/utils/download.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { MigrationPlan } from '../core/migration-planner.js';
2
+ export declare function displayMigrationPlan(plan: MigrationPlan, namespace: string, name: string): void;
3
+ //# sourceMappingURL=plan-display.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-display.d.ts","sourceRoot":"","sources":["../../src/utils/plan-display.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAOlE,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,GACX,IAAI,CAuFN"}
@@ -0,0 +1,80 @@
1
+ import chalk from 'chalk';
2
+ import { header, label } from './output.js';
3
+ import { extractChannelType, isBareChannel, } from '../core/config-patcher.js';
4
+ export function displayMigrationPlan(plan, namespace, name) {
5
+ console.log('');
6
+ const versionStr = plan.versionChange
7
+ ? ` v${plan.versionChange.from} → v${plan.versionChange.to}`
8
+ : '';
9
+ console.log(header(`Migration Plan: ${namespace}/${name}${versionStr}`));
10
+ console.log('');
11
+ // Agents
12
+ console.log(label('Agents:'));
13
+ for (const a of plan.agents) {
14
+ switch (a.type) {
15
+ case 'add':
16
+ console.log(` ${chalk.green('+')} ${a.slug} (add)`);
17
+ break;
18
+ case 'remove':
19
+ console.log(` ${chalk.red('-')} ${a.slug} (remove)`);
20
+ break;
21
+ case 'update':
22
+ console.log(` ${chalk.yellow('~')} ${a.slug} (${a.changedFiles?.length} files changed)`);
23
+ break;
24
+ case 'unchanged':
25
+ console.log(` ${chalk.dim('=')} ${a.slug} (unchanged)`);
26
+ break;
27
+ }
28
+ }
29
+ // Bindings
30
+ if (plan.bindings.length > 0) {
31
+ console.log('');
32
+ console.log(label('Bindings:'));
33
+ for (const b of plan.bindings) {
34
+ if (b.type === 'add') {
35
+ const channelType = extractChannelType(b.binding.match.channel);
36
+ const bare = isBareChannel(b.binding.match.channel);
37
+ let annotation = '';
38
+ if (bare) {
39
+ annotation = chalk.dim(' (bare channel — shadows main)');
40
+ }
41
+ console.log(` ${chalk.green('+')} ${b.binding.match.channel} → ${b.binding.agentId}${annotation}`);
42
+ }
43
+ else {
44
+ console.log(` ${chalk.red('-')} ${b.binding.match.channel} → ${b.binding.agentId}`);
45
+ }
46
+ }
47
+ }
48
+ // Cron
49
+ if (plan.cron.length > 0) {
50
+ console.log('');
51
+ console.log(label('Cron Jobs:'));
52
+ for (const c of plan.cron) {
53
+ switch (c.type) {
54
+ case 'add':
55
+ console.log(` ${chalk.green('+')} ${c.name}`);
56
+ break;
57
+ case 'remove':
58
+ console.log(` ${chalk.red('-')} ${c.name}`);
59
+ break;
60
+ case 'update':
61
+ console.log(` ${chalk.yellow('~')} ${c.name}`);
62
+ break;
63
+ }
64
+ }
65
+ }
66
+ // A2a
67
+ if (plan.a2a.length > 0) {
68
+ console.log('');
69
+ console.log(label('Agent-to-Agent:'));
70
+ for (const edge of plan.a2a) {
71
+ const prefix = edge.type === 'add'
72
+ ? chalk.green('+')
73
+ : edge.type === 'remove'
74
+ ? chalk.red('-')
75
+ : chalk.yellow('~');
76
+ console.log(` ${prefix} ${edge.from} → ${edge.to}`);
77
+ }
78
+ }
79
+ }
80
+ //# sourceMappingURL=plan-display.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-display.js","sourceRoot":"","sources":["../../src/utils/plan-display.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export declare class UnsupportedSemverRange extends Error {
2
+ constructor(range: string);
3
+ }
4
+ export declare function parseSemver(v: string): {
5
+ major: number;
6
+ minor: number;
7
+ patch: number;
8
+ };
9
+ export declare function compareSemver(a: string, b: string): number;
10
+ export declare function satisfiesRange(version: string, range: string): boolean;
11
+ export declare function resolveRange(versions: string[], range: string): string | null;
12
+ //# sourceMappingURL=semver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semver.d.ts","sourceRoot":"","sources":["../../src/utils/semver.ts"],"names":[],"mappings":"AAAA,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,KAAK,EAAE,MAAM;CAI1B;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAWtF;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAoDtE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAK7E"}
@@ -0,0 +1,82 @@
1
+ export class UnsupportedSemverRange extends Error {
2
+ constructor(range) {
3
+ super(`Unsupported semver range: "${range}"`);
4
+ this.name = 'UnsupportedSemverRange';
5
+ }
6
+ }
7
+ export function parseSemver(v) {
8
+ const cleaned = v.startsWith('v') ? v.slice(1) : v;
9
+ const match = /^(\d+)\.(\d+)\.(\d+)$/.exec(cleaned);
10
+ if (!match) {
11
+ throw new Error(`Invalid semver version: "${v}"`);
12
+ }
13
+ return {
14
+ major: parseInt(match[1], 10),
15
+ minor: parseInt(match[2], 10),
16
+ patch: parseInt(match[3], 10),
17
+ };
18
+ }
19
+ export function compareSemver(a, b) {
20
+ const pa = parseSemver(a);
21
+ const pb = parseSemver(b);
22
+ if (pa.major !== pb.major)
23
+ return pa.major - pb.major;
24
+ if (pa.minor !== pb.minor)
25
+ return pa.minor - pb.minor;
26
+ return pa.patch - pb.patch;
27
+ }
28
+ export function satisfiesRange(version, range) {
29
+ const trimmed = range.trim();
30
+ // Wildcard — matches everything
31
+ if (trimmed === '*')
32
+ return true;
33
+ // Exact match: 1.2.3
34
+ if (/^\d+\.\d+\.\d+$/.test(trimmed)) {
35
+ return compareSemver(version, trimmed) === 0;
36
+ }
37
+ // Caret: ^1.2.3
38
+ const caretMatch = /^\^(\d+\.\d+\.\d+)$/.exec(trimmed);
39
+ if (caretMatch) {
40
+ const base = parseSemver(caretMatch[1]);
41
+ const v = parseSemver(version);
42
+ if (base.major > 0) {
43
+ // ^1.2.3 := >=1.2.3, <2.0.0
44
+ return v.major === base.major &&
45
+ compareSemver(version, caretMatch[1]) >= 0;
46
+ }
47
+ if (base.minor > 0) {
48
+ // ^0.2.3 := >=0.2.3, <0.3.0
49
+ return v.major === 0 &&
50
+ v.minor === base.minor &&
51
+ compareSemver(version, caretMatch[1]) >= 0;
52
+ }
53
+ // ^0.0.3 := >=0.0.3, <0.0.4
54
+ return v.major === 0 &&
55
+ v.minor === 0 &&
56
+ v.patch === base.patch;
57
+ }
58
+ // Tilde: ~1.2.3
59
+ const tildeMatch = /^~(\d+\.\d+\.\d+)$/.exec(trimmed);
60
+ if (tildeMatch) {
61
+ const base = parseSemver(tildeMatch[1]);
62
+ const v = parseSemver(version);
63
+ // ~1.2.3 := >=1.2.3, <1.3.0
64
+ return v.major === base.major &&
65
+ v.minor === base.minor &&
66
+ compareSemver(version, tildeMatch[1]) >= 0;
67
+ }
68
+ // GTE: >=1.2.3
69
+ const gteMatch = /^>=(\d+\.\d+\.\d+)$/.exec(trimmed);
70
+ if (gteMatch) {
71
+ return compareSemver(version, gteMatch[1]) >= 0;
72
+ }
73
+ throw new UnsupportedSemverRange(range);
74
+ }
75
+ export function resolveRange(versions, range) {
76
+ const matching = versions.filter((v) => satisfiesRange(v, range));
77
+ if (matching.length === 0)
78
+ return null;
79
+ matching.sort(compareSemver);
80
+ return matching[matching.length - 1];
81
+ }
82
+ //# sourceMappingURL=semver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"semver.js","sourceRoot":"","sources":["../../src/utils/semver.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,25 @@
1
+ export interface ResolveOptions {
2
+ registryUrl?: string;
3
+ skipCache?: boolean;
4
+ }
5
+ export interface ResolvedFormation {
6
+ formationPath: string;
7
+ tempDir: string | null;
8
+ registryRef?: {
9
+ name: string;
10
+ version: string;
11
+ };
12
+ }
1
13
  /**
2
- * If the given path looks like a tarball (.tar.gz or .tgz), extract it
3
- * to a temp directory and return the extracted path. Otherwise return
4
- * the original path unchanged.
14
+ * Resolve a formation source to a local directory path.
15
+ *
16
+ * Resolution order (local-first):
17
+ * 1. Tarball (.tar.gz, .tgz) → extract to temp dir
18
+ * 2. Local path exists → use as-is (local always wins)
19
+ * 3. Bare formation name → resolve from registry
20
+ * 4. Otherwise → treat as local path (fails naturally in manifest loader)
5
21
  *
6
22
  * Caller is responsible for cleaning up the temp directory if one was created.
7
23
  */
8
- export declare function resolveFormationPath(inputPath: string): Promise<{
9
- formationPath: string;
10
- tempDir: string | null;
11
- }>;
24
+ export declare function resolveFormationPath(inputPath: string, options?: ResolveOptions): Promise<ResolvedFormation>;
12
25
  //# sourceMappingURL=tarball.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tarball.d.ts","sourceRoot":"","sources":["../../src/utils/tarball.ts"],"names":[],"mappings":"AAKA;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAQ5D"}
1
+ {"version":3,"file":"tarball.d.ts","sourceRoot":"","sources":["../../src/utils/tarball.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACjD;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,oBAAoB,CACxC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,iBAAiB,CAAC,CA6B5B"}
@@ -1,23 +1,50 @@
1
1
  import { mkdtemp } from 'node:fs/promises';
2
+ import { existsSync } from 'node:fs';
2
3
  import { join } from 'node:path';
3
4
  import { tmpdir } from 'node:os';
4
5
  import { extract } from 'tar';
6
+ import { isBareFormationName, parseRegistryRef, resolveFromRegistry, } from '../core/registry.js';
5
7
  /**
6
- * If the given path looks like a tarball (.tar.gz or .tgz), extract it
7
- * to a temp directory and return the extracted path. Otherwise return
8
- * the original path unchanged.
8
+ * Resolve a formation source to a local directory path.
9
+ *
10
+ * Resolution order (local-first):
11
+ * 1. Tarball (.tar.gz, .tgz) → extract to temp dir
12
+ * 2. Local path exists → use as-is (local always wins)
13
+ * 3. Bare formation name → resolve from registry
14
+ * 4. Otherwise → treat as local path (fails naturally in manifest loader)
9
15
  *
10
16
  * Caller is responsible for cleaning up the temp directory if one was created.
11
17
  */
12
- export async function resolveFormationPath(inputPath) {
13
- if (!isTarball(inputPath)) {
18
+ export async function resolveFormationPath(inputPath, options) {
19
+ // 1. Tarball?
20
+ if (isTarball(inputPath)) {
21
+ const tempDir = await mkdtemp(join(tmpdir(), 'reef-install-'));
22
+ await extract({ file: inputPath, cwd: tempDir });
23
+ return { formationPath: tempDir, tempDir };
24
+ }
25
+ // 2. Local path exists? (local always wins)
26
+ if (existsSync(inputPath)) {
14
27
  return { formationPath: inputPath, tempDir: null };
15
28
  }
16
- const tempDir = await mkdtemp(join(tmpdir(), 'reef-install-'));
17
- await extract({ file: inputPath, cwd: tempDir });
18
- return { formationPath: tempDir, tempDir };
29
+ // 3. Bare formation name? → resolve from registry
30
+ if (isBareFormationName(inputPath)) {
31
+ const { name, version } = parseRegistryRef(inputPath);
32
+ const result = await resolveFromRegistry(name, version, {
33
+ registryUrl: options?.registryUrl,
34
+ skipCache: options?.skipCache,
35
+ });
36
+ return {
37
+ formationPath: result.formationPath,
38
+ tempDir: result.tempDir,
39
+ registryRef: { name: result.name, version: result.version },
40
+ };
41
+ }
42
+ // 4. Fallthrough → treat as local path
43
+ return { formationPath: inputPath, tempDir: null };
19
44
  }
20
45
  function isTarball(path) {
21
- return path.endsWith('.tar.gz') || path.endsWith('.tgz') || path.endsWith('.reef.tar.gz');
46
+ return (path.endsWith('.tar.gz') ||
47
+ path.endsWith('.tgz') ||
48
+ path.endsWith('.reef.tar.gz'));
22
49
  }
23
50
  //# sourceMappingURL=tarball.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tarball.js","sourceRoot":"","sources":["../../src/utils/tarball.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAE9B;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,SAAiB;IAEjB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACrD,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IAC/D,MAAM,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;AAC5F,CAAC"}
1
+ {"version":3,"file":"tarball.js","sourceRoot":"","sources":["../../src/utils/tarball.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAC9B,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAa7B;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,SAAiB,EACjB,OAAwB;IAExB,cAAc;IACd,IAAI,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;QAC/D,MAAM,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;QACjD,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IAC7C,CAAC;IAED,4CAA4C;IAC5C,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACrD,CAAC;IAED,kDAAkD;IAClD,IAAI,mBAAmB,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE;YACtD,WAAW,EAAE,OAAO,EAAE,WAAW;YACjC,SAAS,EAAE,OAAO,EAAE,SAAS;SAC9B,CAAC,CAAC;QACH,OAAO;YACL,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;SAC5D,CAAC;IACJ,CAAC;IAED,uCAAuC;IACvC,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACrD,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,CACL,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAC9B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const VERSION: string;
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,OAAO,EAAE,MAAoB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { createRequire } from 'node:module';
2
+ const require = createRequire(import.meta.url);
3
+ const pkg = require('../package.json');
4
+ export const VERSION = pkg.version;
5
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAwB,CAAC;AAE9D,MAAM,CAAC,MAAM,OAAO,GAAW,GAAG,CAAC,OAAO,CAAC"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@openreef/cli",
3
- "version": "0.3.5",
3
+ "version": "0.5.0",
4
4
  "description": "CLI toolchain for OpenReef formations — package and deploy multi-agent teams",
5
5
  "type": "module",
6
6
  "bin": {
7
- "reef": "./dist/index.js"
7
+ "reef": "dist/index.js"
8
8
  },
9
9
  "files": [
10
10
  "dist",
@@ -51,6 +51,6 @@
51
51
  "license": "MIT",
52
52
  "repository": {
53
53
  "type": "git",
54
- "url": "https://github.com/openreefai/openreef.git"
54
+ "url": "git+https://github.com/openreefai/openreef.git"
55
55
  }
56
56
  }