@medalsocial/pilot 0.1.0 → 0.1.5

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 ADDED
@@ -0,0 +1,88 @@
1
+ # @medalsocial/pilot
2
+
3
+ **Your AI crew, ready to fly.**
4
+
5
+ Pilot is an AI-powered CLI platform by Medal Social. One command gives you a full AI crew that knows your brand, creates content, manages your machine, and works across every AI tool you use.
6
+
7
+ Everything runs locally. Your data stays on your machine.
8
+
9
+ ## Install
10
+
11
+ ```bash
12
+ npm install -g @medalsocial/pilot
13
+ ```
14
+
15
+ ## Usage
16
+
17
+ ```bash
18
+ # Launch the cockpit
19
+ pilot
20
+
21
+ # One-click machine setup
22
+ pilot up <template>
23
+
24
+ # Manage your AI crew
25
+ pilot crew
26
+
27
+ # Teach your crew about your brand
28
+ pilot training
29
+
30
+ # Browse and manage plugins
31
+ pilot plugins
32
+
33
+ # Check for updates
34
+ pilot update
35
+
36
+ # System health
37
+ pilot status
38
+ ```
39
+
40
+ ## Commands
41
+
42
+ | Command | Description |
43
+ |---------|-------------|
44
+ | `pilot` | Launch the cockpit — chat with your crew, see dashboard |
45
+ | `pilot up <template>` | One-click setup — install templates and skills |
46
+ | `pilot crew` | Manage your AI crew — skills, tools, specialists |
47
+ | `pilot training` | Knowledge base — teach your crew about your brand |
48
+ | `pilot plugins` | Browse and manage plugins |
49
+ | `pilot update` | Check for and apply updates |
50
+ | `pilot status` | Machine and system health |
51
+ | `pilot help` | Help reference |
52
+
53
+ ## How It Works
54
+
55
+ Pilot gives you five AI crew leads, each specialized in a domain:
56
+
57
+ - **Brand Lead** — voice, tone, style, guidelines
58
+ - **Marketing Lead** — social posts, campaigns, email, content
59
+ - **Tech Lead** — build, deploy, scaffold, code review
60
+ - **CS Lead** — support tickets, customer issues
61
+ - **Sales Lead** — outreach, pipeline
62
+
63
+ Ask anything in natural language and Pilot routes to the right crew member automatically.
64
+
65
+ ## Key Features
66
+
67
+ - **Local-first** — works offline, no account required
68
+ - **Private by design** — your data never leaves your machine
69
+ - **Cloud-optional** — connect for sync, registry, team sharing
70
+ - **Portable config** — generates AGENTS.md and CLAUDE.md for use in Claude Code, Codex, and more
71
+ - **Plugin system** — extend with community or custom plugins
72
+
73
+ ## Plugin System
74
+
75
+ Pilot supports plugins declared via `plugin.toml` with permission enforcement:
76
+
77
+ - `@medalsocial/kit` — machine management
78
+ - `@medalsocial/sanity` — CMS integration
79
+ - `@medalsocial/pencil` — design tool integration
80
+
81
+ ## Links
82
+
83
+ - [GitHub](https://github.com/Medal-Social/pilot)
84
+ - [Issues](https://github.com/Medal-Social/pilot/issues)
85
+
86
+ ## License
87
+
88
+ MIT
package/dist/colors.d.ts CHANGED
@@ -3,6 +3,7 @@ export declare const colors: {
3
3
  readonly card: "#18181B";
4
4
  readonly border: "#2E2E33";
5
5
  readonly primary: "#9A6AC2";
6
+ readonly info: "#3B82F6";
6
7
  readonly success: "#2DD4BF";
7
8
  readonly warning: "#FBBF24";
8
9
  readonly error: "#EF4444";
@@ -1 +1 @@
1
- {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;;;;;;;;;;CAUT,CAAC"}
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM;;;;;;;;;;;CAWT,CAAC"}
package/dist/colors.js CHANGED
@@ -3,6 +3,7 @@ export const colors = {
3
3
  card: '#18181B',
4
4
  border: '#2E2E33',
5
5
  primary: '#9A6AC2',
6
+ info: '#3B82F6',
6
7
  success: '#2DD4BF',
7
8
  warning: '#FBBF24',
8
9
  error: '#EF4444',
@@ -1 +1 @@
1
- {"version":3,"file":"colors.js","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;CACR,CAAC"}
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,EAAE,EAAE,SAAS;IACb,IAAI,EAAE,SAAS;IACf,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,SAAS;IACf,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;CACR,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"members.d.ts","sourceRoot":"","sources":["../../src/crew/members.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,eAAO,MAAM,WAAW,EAAE,UAAU,EA+BnC,CAAC"}
1
+ {"version":3,"file":"members.d.ts","sourceRoot":"","sources":["../../src/crew/members.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,eAAO,MAAM,WAAW,EAAE,UAAU,EA+BnC,CAAC"}
@@ -1,33 +1,34 @@
1
+ import { colors } from '../colors.js';
1
2
  export const defaultCrew = [
2
3
  {
3
4
  role: 'Brand Lead',
4
5
  description: 'Learns your voice, trains all other leads',
5
6
  skills: ['brand-voice', 'tone-analysis'],
6
- color: '#9A6AC2',
7
+ color: colors.primary,
7
8
  },
8
9
  {
9
10
  role: 'Marketing Lead',
10
11
  description: 'Social posts, campaigns, content calendar',
11
12
  skills: ['content-writer', 'social-scheduler'],
12
- color: '#2DD4BF',
13
+ color: colors.success,
13
14
  },
14
15
  {
15
16
  role: 'Tech Lead',
16
17
  description: 'Suite builds, deploys, code review',
17
18
  skills: ['nextmedal', 'deploy'],
18
- color: '#3B82F6',
19
+ color: colors.info,
19
20
  },
20
21
  {
21
22
  role: 'CS Lead',
22
23
  description: 'Tickets, escalation, customer retention',
23
24
  skills: ['support-agent'],
24
- color: '#F59E0B',
25
+ color: colors.warning,
25
26
  },
26
27
  {
27
28
  role: 'Sales Lead',
28
29
  description: 'Outreach, pipeline, lead scoring',
29
30
  skills: ['outreach'],
30
- color: '#EF4444',
31
+ color: colors.error,
31
32
  },
32
33
  ];
33
34
  //# sourceMappingURL=members.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"members.js","sourceRoot":"","sources":["../../src/crew/members.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,2CAA2C;QACxD,MAAM,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC;QACxC,KAAK,EAAE,SAAS;KACjB;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,2CAA2C;QACxD,MAAM,EAAE,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;QAC9C,KAAK,EAAE,SAAS;KACjB;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,oCAAoC;QACjD,MAAM,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;QAC/B,KAAK,EAAE,SAAS;KACjB;IACD;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,yCAAyC;QACtD,MAAM,EAAE,CAAC,eAAe,CAAC;QACzB,KAAK,EAAE,SAAS;KACjB;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,kCAAkC;QAC/C,MAAM,EAAE,CAAC,UAAU,CAAC;QACpB,KAAK,EAAE,SAAS;KACjB;CACF,CAAC"}
1
+ {"version":3,"file":"members.js","sourceRoot":"","sources":["../../src/crew/members.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,2CAA2C;QACxD,MAAM,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC;QACxC,KAAK,EAAE,MAAM,CAAC,OAAO;KACtB;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,2CAA2C;QACxD,MAAM,EAAE,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;QAC9C,KAAK,EAAE,MAAM,CAAC,OAAO;KACtB;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,oCAAoC;QACjD,MAAM,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC;QAC/B,KAAK,EAAE,MAAM,CAAC,IAAI;KACnB;IACD;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,yCAAyC;QACtD,MAAM,EAAE,CAAC,eAAe,CAAC;QACzB,KAAK,EAAE,MAAM,CAAC,OAAO;KACtB;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,kCAAkC;QAC/C,MAAM,EAAE,CAAC,UAAU,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB;CACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ export declare const errorCodes: {
2
+ readonly UPDATE_CHECK_FAILED: "UPDATE_CHECK_FAILED";
3
+ readonly UPDATE_INSTALL_FAILED: "UPDATE_INSTALL_FAILED";
4
+ };
5
+ type ErrorCode = (typeof errorCodes)[keyof typeof errorCodes];
6
+ export declare class PilotError extends Error {
7
+ code: ErrorCode;
8
+ constructor(code: ErrorCode, detail?: string);
9
+ }
10
+ export {};
11
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;CAGb,CAAC;AAEX,KAAK,SAAS,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC;AAO9D,qBAAa,UAAW,SAAQ,KAAK;IACnC,IAAI,EAAE,SAAS,CAAC;gBAEJ,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM;CAM7C"}
package/dist/errors.js ADDED
@@ -0,0 +1,19 @@
1
+ export const errorCodes = {
2
+ UPDATE_CHECK_FAILED: 'UPDATE_CHECK_FAILED',
3
+ UPDATE_INSTALL_FAILED: 'UPDATE_INSTALL_FAILED',
4
+ };
5
+ const userMessages = {
6
+ UPDATE_CHECK_FAILED: 'Unable to check for updates — are you online?',
7
+ UPDATE_INSTALL_FAILED: 'Update could not be installed. Please try again or visit medalsocial.com/pilot for help.',
8
+ };
9
+ export class PilotError extends Error {
10
+ code;
11
+ constructor(code, detail) {
12
+ super(userMessages[code]);
13
+ this.code = code;
14
+ this.name = 'PilotError';
15
+ if (detail)
16
+ this.cause = detail;
17
+ }
18
+ }
19
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,uBAAuB;CACtC,CAAC;AAIX,MAAM,YAAY,GAA8B;IAC9C,mBAAmB,EAAE,+CAA+C;IACpE,qBAAqB,EAAE,0FAA0F;CAClH,CAAC;AAEF,MAAM,OAAO,UAAW,SAAQ,KAAK;IACnC,IAAI,CAAY;IAEhB,YAAY,IAAe,EAAE,MAAe;QAC1C,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC;QACzB,IAAI,MAAM;YAAE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;IAClC,CAAC;CACF"}
@@ -9,10 +9,12 @@ export function useListNav({ listLength, tabs, initialTab }) {
9
9
  }, [listLength]);
10
10
  useInput((input, key) => {
11
11
  if (key.downArrow) {
12
- setSelected((s) => (s + 1) % listLength);
12
+ if (listLength > 0)
13
+ setSelected((s) => (s + 1) % listLength);
13
14
  }
14
15
  else if (key.upArrow) {
15
- setSelected((s) => (s - 1 + listLength) % listLength);
16
+ if (listLength > 0)
17
+ setSelected((s) => (s - 1 + listLength) % listLength);
16
18
  }
17
19
  else {
18
20
  const num = Number.parseInt(input, 10);
@@ -1 +1 @@
1
- {"version":3,"file":"useListNav.js","sourceRoot":"","sources":["../../src/hooks/useListNav.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAc/B,MAAM,UAAU,UAAU,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAqB;IAC5E,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAQ,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnF,mFAAmF;IACnF,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACvB,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACnC,YAAY,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC/B,WAAW,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"useListNav.js","sourceRoot":"","sources":["../../src/hooks/useListNav.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAc/B,MAAM,UAAU,UAAU,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAqB;IAC5E,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAQ,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAEnF,mFAAmF;IACnF,SAAS,CAAC,GAAG,EAAE;QACb,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,IAAI,UAAU,GAAG,CAAC;gBAAE,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC;QAC/D,CAAC;aAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YACvB,IAAI,UAAU,GAAG,CAAC;gBAAE,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,UAAU,CAAC,CAAC;QAC5E,CAAC;aAAM,CAAC;YACN,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACnC,YAAY,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC/B,WAAW,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AACjC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/plugins/discover.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACpD;AAqCD,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,YAAY,EAAE,CAgBxE"}
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/plugins/discover.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACpD;AA4CD,wBAAgB,eAAe,CAAC,OAAO,EAAE,eAAe,GAAG,YAAY,EAAE,CAgBxE"}
@@ -13,8 +13,15 @@ function scanDir(dir, enabledState) {
13
13
  const tomlPath = join(pluginDir, 'plugin.toml');
14
14
  if (!existsSync(tomlPath))
15
15
  continue;
16
- const raw = readFileSync(tomlPath, 'utf-8');
17
- const parsed = parseToml(raw);
16
+ let raw;
17
+ let parsed;
18
+ try {
19
+ raw = readFileSync(tomlPath, 'utf-8');
20
+ parsed = parseToml(raw);
21
+ }
22
+ catch {
23
+ continue;
24
+ }
18
25
  const result = parseManifest(parsed);
19
26
  if (!result.success)
20
27
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/plugins/discover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAQ9C,SAAS,OAAO,CACd,GAAW,EACX,YAAkD;IAElD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAEhD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAS;QAEpC,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,SAAS;QAE9B,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;QAE/B,OAAO,CAAC,IAAI,CAAC;YACX,QAAQ,EAAE,MAAM,CAAC,IAAI;YACrB,EAAE;YACF,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,IAAI;YAC/B,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAwB;IACtD,kDAAkD;IAClD,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzC,GAAG,CAAC;QACJ,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,OAAO;KAC1D,CAAC,CAAC,CAAC;IAEJ,8BAA8B;IAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAE5D,mDAAmD;IACnD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAExC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5B,CAAC"}
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/plugins/discover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAQ9C,SAAS,OAAO,CACd,GAAW,EACX,YAAkD;IAElD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;QAEhD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAS;QAEpC,IAAI,GAAW,CAAC;QAChB,IAAI,MAA+B,CAAC;QACpC,IAAI,CAAC;YACH,GAAG,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACtC,MAAM,GAAG,SAAS,CAAC,GAAG,CAA4B,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QAErC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,SAAS;QAE9B,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;QAE/B,OAAO,CAAC,IAAI,CAAC;YACX,QAAQ,EAAE,MAAM,CAAC,IAAI;YACrB,EAAE;YACF,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,IAAI;YAC/B,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAwB;IACtD,kDAAkD;IAClD,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzC,GAAG,CAAC;QACJ,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,OAAO;KAC1D,CAAC,CAAC,CAAC;IAEJ,8BAA8B;IAC9B,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAE5D,mDAAmD;IACnD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,IAAI;QAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAExC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;AAC5B,CAAC"}
@@ -4,62 +4,16 @@ export declare const manifestSchema: z.ZodObject<{
4
4
  namespace: z.ZodString;
5
5
  description: z.ZodString;
6
6
  provides: z.ZodDefault<z.ZodOptional<z.ZodObject<{
7
- commands: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
8
- mcpServers: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
9
- }, "strip", z.ZodTypeAny, {
10
- commands: string[];
11
- mcpServers: string[];
12
- }, {
13
- commands?: string[] | undefined;
14
- mcpServers?: string[] | undefined;
15
- }>>>;
7
+ commands: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
8
+ mcpServers: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
9
+ }, z.core.$strip>>>;
16
10
  permissions: z.ZodDefault<z.ZodOptional<z.ZodObject<{
17
- network: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
18
- }, "strip", z.ZodTypeAny, {
19
- network: string[];
20
- }, {
21
- network?: string[] | undefined;
22
- }>>>;
11
+ network: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString>>>;
12
+ }, z.core.$strip>>>;
23
13
  roleBindings: z.ZodDefault<z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>>;
24
- }, "strip", z.ZodTypeAny, {
25
- name: string;
26
- namespace: string;
27
- description: string;
28
- provides: {
29
- commands: string[];
30
- mcpServers: string[];
31
- };
32
- permissions: {
33
- network: string[];
34
- };
35
- roleBindings: Record<string, string>;
36
- }, {
37
- name: string;
38
- namespace: string;
39
- description: string;
40
- provides?: {
41
- commands?: string[] | undefined;
42
- mcpServers?: string[] | undefined;
43
- } | undefined;
44
- permissions?: {
45
- network?: string[] | undefined;
46
- } | undefined;
47
- roleBindings?: Record<string, string> | undefined;
48
- }>;
14
+ }, z.core.$strip>;
49
15
  export type PluginManifest = z.infer<typeof manifestSchema>;
50
- export declare function parseManifest(raw: unknown): z.SafeParseReturnType<{
51
- name: string;
52
- namespace: string;
53
- description: string;
54
- provides?: {
55
- commands?: string[] | undefined;
56
- mcpServers?: string[] | undefined;
57
- } | undefined;
58
- permissions?: {
59
- network?: string[] | undefined;
60
- } | undefined;
61
- roleBindings?: Record<string, string> | undefined;
62
- }, {
16
+ export declare function parseManifest(raw: unknown): z.ZodSafeParseResult<{
63
17
  name: string;
64
18
  namespace: string;
65
19
  description: string;
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/plugins/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBzB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;GAEzC;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAEzD"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../src/plugins/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,cAAc;;;;;;;;;;;;iBAkBzB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE5D,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO;;;;;;;;;;;;GAEzC;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAEzD"}
@@ -9,13 +9,13 @@ export const manifestSchema = z.object({
9
9
  mcpServers: z.array(z.string()).optional().default([]),
10
10
  })
11
11
  .optional()
12
- .default({}),
12
+ .default({ commands: [], mcpServers: [] }),
13
13
  permissions: z
14
14
  .object({
15
15
  network: z.array(z.string()).optional().default([]),
16
16
  })
17
17
  .optional()
18
- .default({}),
18
+ .default({ network: [] }),
19
19
  roleBindings: z.record(z.string(), z.string()).optional().default({}),
20
20
  });
21
21
  export function parseManifest(raw) {
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/plugins/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC;QACN,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;KACvD,CAAC;SACD,QAAQ,EAAE;SACV,OAAO,CAAC,EAAE,CAAC;IACd,WAAW,EAAE,CAAC;SACX,MAAM,CAAC;QACN,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;KACpD,CAAC;SACD,QAAQ,EAAE;SACV,OAAO,CAAC,EAAE,CAAC;IACd,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CACtE,CAAC,CAAC;AAIH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,OAAO,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,QAAwB;IAC/C,OAAO,IAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/plugins/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,QAAQ,EAAE,CAAC;SACR,MAAM,CAAC;QACN,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QACpD,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;KACvD,CAAC;SACD,QAAQ,EAAE;SACV,OAAO,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IAC5C,WAAW,EAAE,CAAC;SACX,MAAM,CAAC;QACN,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;KACpD,CAAC;SACD,QAAQ,EAAE;SACV,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC3B,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;CACtE,CAAC,CAAC;AAIH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,OAAO,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,QAAwB;IAC/C,OAAO,IAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;AACnD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"Plugins.d.ts","sourceRoot":"","sources":["../../src/screens/Plugins.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAQxD,UAAU,YAAY;IACpB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,wBAAgB,OAAO,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,YAAY,2CA2GhE"}
1
+ {"version":3,"file":"Plugins.d.ts","sourceRoot":"","sources":["../../src/screens/Plugins.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAcxD,UAAU,YAAY;IACpB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,wBAAgB,OAAO,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,EAAE,YAAY,2CA2GhE"}
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState } from 'react';
2
+ import { useEffect, useMemo, useState } from 'react';
3
3
  import { Box, Text, useInput } from 'ink';
4
4
  import { SplitPanel } from '../components/SplitPanel.js';
5
5
  import { TabBar } from '../components/TabBar.js';
@@ -12,19 +12,23 @@ const TABS = [
12
12
  { id: 'enabled', label: 'Enabled' },
13
13
  { id: 'disabled', label: 'Disabled' },
14
14
  ];
15
+ function filterByTab(plugins, tab) {
16
+ if (tab === 'enabled')
17
+ return plugins.filter((p) => p.enabled);
18
+ if (tab === 'disabled')
19
+ return plugins.filter((p) => !p.enabled);
20
+ return plugins;
21
+ }
15
22
  export function Plugins({ plugins: initialPlugins }) {
16
23
  const [plugins, setPlugins] = useState(initialPlugins);
24
+ const [activeTab, setActiveTab] = useState('all');
25
+ const displayPlugins = useMemo(() => filterByTab(plugins, activeTab), [plugins, activeTab]);
17
26
  const nav = useListNav({
18
- listLength: Math.max(1, plugins.length),
27
+ listLength: displayPlugins.length,
19
28
  tabs: TABS,
20
29
  });
21
- const displayPlugins = plugins.filter((p) => {
22
- if (nav.activeTab === 'enabled')
23
- return p.enabled;
24
- if (nav.activeTab === 'disabled')
25
- return !p.enabled;
26
- return true;
27
- });
30
+ // Sync local activeTab with the hook's tab state so filtered list length stays correct
31
+ useEffect(() => { setActiveTab(nav.activeTab); }, [nav.activeTab]);
28
32
  const current = displayPlugins[nav.selected];
29
33
  useInput((input) => {
30
34
  if (!current)
@@ -1 +1 @@
1
- {"version":3,"file":"Plugins.js","sourceRoot":"","sources":["../../src/screens/Plugins.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Plugins.js","sourceRoot":"","sources":["../../src/screens/Plugins.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Update.d.ts","sourceRoot":"","sources":["../../src/screens/Update.tsx"],"names":[],"mappings":"AAUA,UAAU,WAAW;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,MAAM,CAAC,EAAE,cAAc,EAAE,EAAE,WAAW,2CAmHrD"}
1
+ {"version":3,"file":"Update.d.ts","sourceRoot":"","sources":["../../src/screens/Update.tsx"],"names":[],"mappings":"AAUA,UAAU,WAAW;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,MAAM,CAAC,EAAE,cAAc,EAAE,EAAE,WAAW,2CAsHrD"}
@@ -1,4 +1,4 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useEffect, useState } from 'react';
3
3
  import { Box, Text, useInput } from 'ink';
4
4
  import { Step } from '../components/Step.js';
@@ -18,7 +18,7 @@ export function Update({ currentVersion }) {
18
18
  return;
19
19
  setCheckResult(result);
20
20
  if (result.error) {
21
- setUpdateError(result.error);
21
+ setUpdateError(result.error.message);
22
22
  setPhase('error');
23
23
  }
24
24
  else if (result.hasUpdate) {
@@ -43,15 +43,20 @@ export function Update({ currentVersion }) {
43
43
  useEffect(() => {
44
44
  if (phase !== 'updating')
45
45
  return;
46
- const result = applyUpdate();
47
- if (result.success) {
48
- setPhase('complete');
49
- }
50
- else {
51
- setUpdateError(result.error ?? 'Update failed');
52
- setPhase('error');
53
- }
46
+ let cancelled = false;
47
+ applyUpdate().then((result) => {
48
+ if (cancelled)
49
+ return;
50
+ if (result.success) {
51
+ setPhase('complete');
52
+ }
53
+ else {
54
+ setUpdateError(result.error?.message ?? 'Update could not be installed');
55
+ setPhase('error');
56
+ }
57
+ });
58
+ return () => { cancelled = true; };
54
59
  }, [phase]);
55
- return (_jsxs(Box, { flexDirection: "column", padding: 2, gap: 1, children: [_jsx(Text, { color: colors.muted, children: "$ pilot update" }), phase === 'checking' && (_jsx(Step, { label: "Checking for updates...", status: "active" })), phase === 'up-to-date' && (_jsxs(_Fragment, { children: [_jsx(Step, { label: "Version check complete", status: "done" }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: colors.success, bold: true, children: ["\u2708 Flight systems are current (", currentVersion, ")"] }) })] })), phase === 'confirm' && checkResult && (_jsxs(_Fragment, { children: [_jsx(Step, { label: "Update available", status: "done" }), _jsxs(Box, { marginTop: 1, flexDirection: "column", gap: 1, children: [_jsxs(Text, { color: colors.text, children: [_jsx(Text, { bold: true, children: checkResult.current }), _jsx(Text, { color: colors.muted, children: " \u2192 " }), _jsx(Text, { bold: true, color: colors.success, children: checkResult.latest })] }), _jsx(Text, { color: colors.text, children: "Apply update? [Y/n]" })] })] })), phase === 'updating' && (_jsxs(_Fragment, { children: [_jsx(Step, { label: "Downloading update", status: "active" }), _jsx(ProgressBar, { progress: 0.5, label: "Installing..." })] })), phase === 'complete' && checkResult && (_jsxs(_Fragment, { children: [_jsx(Step, { label: "Update downloaded", status: "done" }), _jsx(Step, { label: "Update installed", status: "done" }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: colors.success, bold: true, children: ["\u2708 Flight systems upgraded to ", checkResult.latest, "!"] }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.muted, children: "Restart pilot to use new features" }) })] })), phase === 'error' && (_jsxs(_Fragment, { children: [_jsx(Step, { label: "Update failed", status: "error" }), _jsxs(Box, { marginTop: 1, flexDirection: "column", gap: 1, children: [_jsx(Text, { color: colors.error, children: updateError }), _jsx(Text, { color: colors.muted, children: "Try manually: npm install -g @medalsocial/pilot@latest" })] })] }))] }));
60
+ return (_jsxs(Box, { flexDirection: "column", padding: 2, gap: 1, children: [_jsx(Text, { color: colors.muted, children: "$ pilot update" }), phase === 'checking' && (_jsx(Step, { label: "Checking for updates...", status: "active" })), phase === 'up-to-date' && (_jsxs(_Fragment, { children: [_jsx(Step, { label: "Version check complete", status: "done" }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.success, bold: true, children: "\u2708 Flight systems are current" }) })] })), phase === 'confirm' && checkResult && (_jsxs(_Fragment, { children: [_jsx(Step, { label: "New version available", status: "done" }), _jsxs(Box, { marginTop: 1, flexDirection: "column", gap: 1, children: [_jsx(Text, { color: colors.text, children: "A newer version of Pilot is available." }), _jsx(Text, { color: colors.text, children: "Apply update? [Y/n]" })] })] })), phase === 'updating' && (_jsxs(_Fragment, { children: [_jsx(Step, { label: "Downloading update", status: "active" }), _jsx(ProgressBar, { progress: 0.5, label: "Installing..." })] })), phase === 'complete' && (_jsxs(_Fragment, { children: [_jsx(Step, { label: "Update downloaded", status: "done" }), _jsx(Step, { label: "Update installed", status: "done" }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.success, bold: true, children: "\u2708 Flight systems upgraded!" }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: colors.muted, children: "Restart Pilot to use new features" }) })] })), phase === 'error' && (_jsxs(_Fragment, { children: [_jsx(Step, { label: "Update failed", status: "error" }), _jsxs(Box, { marginTop: 1, flexDirection: "column", gap: 1, children: [_jsx(Text, { color: colors.error, children: updateError }), _jsx(Text, { color: colors.muted, children: "Visit medalsocial.com/pilot for help" })] })] }))] }));
56
61
  }
57
62
  //# sourceMappingURL=Update.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Update.js","sourceRoot":"","sources":["../../src/screens/Update.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Update.js","sourceRoot":"","sources":["../../src/screens/Update.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC/C;AAOD,wBAAgB,YAAY,IAAI,aAAa,CAM5C;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAG1D;AAED,wBAAgB,aAAa,IAAI,IAAI,CAKpC"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC/C;AAOD,wBAAgB,YAAY,IAAI,aAAa,CAU5C;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAG1D;AAED,wBAAgB,aAAa,IAAI,IAAI,CAKpC"}
package/dist/settings.js CHANGED
@@ -11,8 +11,13 @@ export function loadSettings() {
11
11
  if (!existsSync(SETTINGS_FILE)) {
12
12
  return { ...DEFAULT_SETTINGS };
13
13
  }
14
- const raw = JSON.parse(readFileSync(SETTINGS_FILE, 'utf-8'));
15
- return { ...DEFAULT_SETTINGS, ...raw };
14
+ try {
15
+ const raw = JSON.parse(readFileSync(SETTINGS_FILE, 'utf-8'));
16
+ return { ...DEFAULT_SETTINGS, ...raw };
17
+ }
18
+ catch {
19
+ return { ...DEFAULT_SETTINGS };
20
+ }
16
21
  }
17
22
  export function saveSettings(settings) {
18
23
  mkdirSync(PILOT_DIR, { recursive: true });
@@ -1 +1 @@
1
- {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAQvD,MAAM,gBAAgB,GAAkB;IACtC,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF,MAAM,UAAU,YAAY;IAC1B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACjC,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D,OAAO,EAAE,GAAG,gBAAgB,EAAE,GAAG,GAAG,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAuB;IAClD,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,YAAY,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC"}
1
+ {"version":3,"file":"settings.js","sourceRoot":"","sources":["../src/settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAQvD,MAAM,gBAAgB,GAAkB;IACtC,SAAS,EAAE,KAAK;IAChB,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF,MAAM,UAAU,YAAY;IAC1B,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAC/B,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACjC,CAAC;IACD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7D,OAAO,EAAE,GAAG,gBAAgB,EAAE,GAAG,GAAG,EAAE,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,gBAAgB,EAAE,CAAC;IACjC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,QAAuB;IAClD,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,YAAY,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC"}
@@ -1,12 +1,13 @@
1
+ import { PilotError } from '../errors.js';
1
2
  export interface UpdateCheckResult {
2
3
  current: string;
3
4
  latest: string;
4
5
  hasUpdate: boolean;
5
- error?: string;
6
+ error?: PilotError;
6
7
  }
7
8
  export declare function checkForUpdates(currentVersion: string): Promise<UpdateCheckResult>;
8
- export declare function applyUpdate(): {
9
+ export declare function applyUpdate(): Promise<{
9
10
  success: boolean;
10
- error?: string;
11
- };
11
+ error?: PilotError;
12
+ }>;
12
13
  //# sourceMappingURL=checker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../src/update/checker.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA8BxF;AAED,wBAAgB,WAAW,IAAI;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAalE"}
1
+ {"version":3,"file":"checker.d.ts","sourceRoot":"","sources":["../../src/update/checker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAc,MAAM,cAAc,CAAC;AAEtD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAWD,wBAAsB,eAAe,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA2BxF;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC,CAWrF"}
@@ -1,11 +1,19 @@
1
- import { execFileSync } from 'node:child_process';
1
+ import { execFile } from 'node:child_process';
2
+ import { PilotError, errorCodes } from '../errors.js';
3
+ function execAsync(cmd, args, timeout) {
4
+ return new Promise((resolve, reject) => {
5
+ execFile(cmd, args, { encoding: 'utf-8', timeout }, (err, stdout) => {
6
+ if (err)
7
+ reject(err);
8
+ else
9
+ resolve(stdout);
10
+ });
11
+ });
12
+ }
2
13
  export async function checkForUpdates(currentVersion) {
3
14
  try {
4
- const output = execFileSync('npm', ['view', '@medalsocial/pilot', 'version'], {
5
- encoding: 'utf-8',
6
- timeout: 10000,
7
- });
8
- const latest = String(output).trim();
15
+ const output = await execAsync('npm', ['view', '@medalsocial/pilot', 'version'], 10000);
16
+ const latest = output.trim();
9
17
  return {
10
18
  current: currentVersion,
11
19
  latest,
@@ -26,22 +34,20 @@ export async function checkForUpdates(currentVersion) {
26
34
  current: currentVersion,
27
35
  latest: currentVersion,
28
36
  hasUpdate: false,
29
- error: message,
37
+ error: new PilotError(errorCodes.UPDATE_CHECK_FAILED, message),
30
38
  };
31
39
  }
32
40
  }
33
- export function applyUpdate() {
41
+ export async function applyUpdate() {
34
42
  try {
35
- execFileSync('npm', ['install', '-g', '@medalsocial/pilot@latest'], {
36
- encoding: 'utf-8',
37
- timeout: 120000,
38
- });
43
+ await execAsync('npm', ['install', '-g', '@medalsocial/pilot@latest'], 120000);
39
44
  return { success: true };
40
45
  }
41
46
  catch (err) {
47
+ const detail = err instanceof Error ? err.message : 'Unknown error';
42
48
  return {
43
49
  success: false,
44
- error: err instanceof Error ? err.message : 'Unknown error',
50
+ error: new PilotError(errorCodes.UPDATE_INSTALL_FAILED, detail),
45
51
  };
46
52
  }
47
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"checker.js","sourceRoot":"","sources":["../../src/update/checker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AASlD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,cAAsB;IAC1D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,oBAAoB,EAAE,SAAS,CAAC,EAAE;YAC5E,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAErC,OAAO;YACL,OAAO,EAAE,cAAc;YACvB,MAAM;YACN,SAAS,EAAE,MAAM,KAAK,cAAc;SACrC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACrE,2DAA2D;QAC3D,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7D,OAAO;gBACL,OAAO,EAAE,cAAc;gBACvB,MAAM,EAAE,cAAc;gBACtB,SAAS,EAAE,KAAK;aACjB,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE,cAAc;YACvB,MAAM,EAAE,cAAc;YACtB,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,OAAO;SACf,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,IAAI,CAAC;QACH,YAAY,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,2BAA2B,CAAC,EAAE;YAClE,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAC5D,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"checker.js","sourceRoot":"","sources":["../../src/update/checker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAStD,SAAS,SAAS,CAAC,GAAW,EAAE,IAAc,EAAE,OAAe;IAC7D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE;YAClE,IAAI,GAAG;gBAAE,MAAM,CAAC,GAAG,CAAC,CAAC;;gBAChB,OAAO,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,cAAsB;IAC1D,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,oBAAoB,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;QACxF,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAE7B,OAAO;YACL,OAAO,EAAE,cAAc;YACvB,MAAM;YACN,SAAS,EAAE,MAAM,KAAK,cAAc;SACrC,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACrE,2DAA2D;QAC3D,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7D,OAAO;gBACL,OAAO,EAAE,cAAc;gBACvB,MAAM,EAAE,cAAc;gBACtB,SAAS,EAAE,KAAK;aACjB,CAAC;QACJ,CAAC;QACD,OAAO;YACL,OAAO,EAAE,cAAc;YACvB,MAAM,EAAE,cAAc;YACtB,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,IAAI,UAAU,CAAC,UAAU,CAAC,mBAAmB,EAAE,OAAO,CAAC;SAC/D,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,2BAA2B,CAAC,EAAE,MAAM,CAAC,CAAC;QAC/E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;QACpE,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,IAAI,UAAU,CAAC,UAAU,CAAC,qBAAqB,EAAE,MAAM,CAAC;SAChE,CAAC;IACJ,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,14 +1,37 @@
1
1
  {
2
2
  "name": "@medalsocial/pilot",
3
- "version": "0.1.0",
3
+ "version": "0.1.5",
4
4
  "type": "module",
5
5
  "description": "Your AI crew, ready to fly. Medal Social's AI-powered CLI platform.",
6
6
  "license": "MIT",
7
+ "keywords": [
8
+ "cli",
9
+ "ai",
10
+ "agent",
11
+ "medal",
12
+ "social",
13
+ "pilot",
14
+ "crew",
15
+ "anthropic",
16
+ "claude",
17
+ "gemini",
18
+ "codex",
19
+ "marketing",
20
+ "cto",
21
+ "cmo"
22
+ ],
7
23
  "repository": {
8
24
  "type": "git",
9
25
  "url": "git+https://github.com/Medal-Social/pilot.git",
10
26
  "directory": "packages/cli"
11
27
  },
28
+ "bugs": {
29
+ "url": "https://github.com/Medal-Social/pilot/issues"
30
+ },
31
+ "homepage": "https://github.com/Medal-Social/pilot#readme",
32
+ "engines": {
33
+ "node": ">=24.0.0"
34
+ },
12
35
  "bin": {
13
36
  "pilot": "dist/bin/pilot.js"
14
37
  },
@@ -18,7 +41,7 @@
18
41
  ],
19
42
  "publishConfig": {
20
43
  "access": "public",
21
- "provenance": false
44
+ "provenance": true
22
45
  },
23
46
  "scripts": {
24
47
  "dev": "tsx watch src/bin/pilot.ts",
@@ -27,17 +50,17 @@
27
50
  "prepublishOnly": "tsc"
28
51
  },
29
52
  "dependencies": {
30
- "commander": "^13.0.0",
31
- "ink": "^5.1.0",
32
- "ink-text-input": "^6.0.0",
33
- "react": "^18.3.0",
34
- "smol-toml": "^1.6.1",
35
- "zod": "^3.24.0"
53
+ "commander": "14.0.3",
54
+ "ink": "7.0.0",
55
+ "ink-text-input": "6.0.0",
56
+ "react": "19.2.5",
57
+ "smol-toml": "1.6.1",
58
+ "zod": "4.3.6"
36
59
  },
37
60
  "devDependencies": {
38
- "@types/node": "^25.6.0",
39
- "@types/react": "^18.3.0",
40
- "ink-testing-library": "^4.0.0",
41
- "tsx": "^4.19.0"
61
+ "@types/node": "25.6.0",
62
+ "@types/react": "19.2.14",
63
+ "ink-testing-library": "4.0.0",
64
+ "tsx": "4.21.0"
42
65
  }
43
66
  }