unfairly 0.8.1 → 0.8.3

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 (89) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +17 -2
  3. package/dist/auth/browser-flow.d.ts +9 -0
  4. package/dist/auth/browser-flow.d.ts.map +1 -1
  5. package/dist/auth/browser-flow.js +11 -4
  6. package/dist/auth/browser-flow.js.map +1 -1
  7. package/dist/cmd/invite.js +2 -2
  8. package/dist/cmd/invite.js.map +1 -1
  9. package/dist/cmd/pace.d.ts +101 -0
  10. package/dist/cmd/pace.d.ts.map +1 -0
  11. package/dist/cmd/pace.js +426 -0
  12. package/dist/cmd/pace.js.map +1 -0
  13. package/dist/cmd/setup.d.ts +2 -0
  14. package/dist/cmd/setup.d.ts.map +1 -1
  15. package/dist/cmd/setup.js +20 -6
  16. package/dist/cmd/setup.js.map +1 -1
  17. package/dist/index.js +96 -2
  18. package/dist/index.js.map +1 -1
  19. package/dist/lib/types/index.d.ts +6 -6
  20. package/dist/pace/device.d.ts +104 -0
  21. package/dist/pace/device.d.ts.map +1 -0
  22. package/dist/pace/device.js +149 -0
  23. package/dist/pace/device.js.map +1 -0
  24. package/dist/pace/enroll.d.ts +80 -0
  25. package/dist/pace/enroll.d.ts.map +1 -0
  26. package/dist/pace/enroll.js +138 -0
  27. package/dist/pace/enroll.js.map +1 -0
  28. package/dist/pace/identity.d.ts +10 -0
  29. package/dist/pace/identity.d.ts.map +1 -0
  30. package/dist/pace/identity.js +17 -0
  31. package/dist/pace/identity.js.map +1 -0
  32. package/dist/pace/install.d.ts +28 -0
  33. package/dist/pace/install.d.ts.map +1 -0
  34. package/dist/pace/install.js +127 -0
  35. package/dist/pace/install.js.map +1 -0
  36. package/dist/pace/local-evidence.d.ts +75 -0
  37. package/dist/pace/local-evidence.d.ts.map +1 -0
  38. package/dist/pace/local-evidence.js +228 -0
  39. package/dist/pace/local-evidence.js.map +1 -0
  40. package/dist/pace/local-sessions.d.ts +48 -0
  41. package/dist/pace/local-sessions.d.ts.map +1 -0
  42. package/dist/pace/local-sessions.js +254 -0
  43. package/dist/pace/local-sessions.js.map +1 -0
  44. package/dist/pace/managed-config.d.ts +21 -0
  45. package/dist/pace/managed-config.d.ts.map +1 -0
  46. package/dist/pace/managed-config.js +102 -0
  47. package/dist/pace/managed-config.js.map +1 -0
  48. package/dist/pace/normalize.d.ts +10 -0
  49. package/dist/pace/normalize.d.ts.map +1 -0
  50. package/dist/pace/normalize.js +293 -0
  51. package/dist/pace/normalize.js.map +1 -0
  52. package/dist/pace/repository.d.ts +72 -0
  53. package/dist/pace/repository.d.ts.map +1 -0
  54. package/dist/pace/repository.js +120 -0
  55. package/dist/pace/repository.js.map +1 -0
  56. package/dist/pace/schema.d.ts +1325 -0
  57. package/dist/pace/schema.d.ts.map +1 -0
  58. package/dist/pace/schema.js +134 -0
  59. package/dist/pace/schema.js.map +1 -0
  60. package/dist/pace/session-summary.d.ts +179 -0
  61. package/dist/pace/session-summary.d.ts.map +1 -0
  62. package/dist/pace/session-summary.js +140 -0
  63. package/dist/pace/session-summary.js.map +1 -0
  64. package/dist/pace/spool.d.ts +6 -0
  65. package/dist/pace/spool.d.ts.map +1 -0
  66. package/dist/pace/spool.js +87 -0
  67. package/dist/pace/spool.js.map +1 -0
  68. package/dist/pace-runtime.d.ts +2 -0
  69. package/dist/pace-runtime.d.ts.map +1 -0
  70. package/dist/pace-runtime.js +67 -0
  71. package/dist/pace-runtime.js.map +1 -0
  72. package/package.json +5 -2
  73. package/plugin/.claude-plugin/plugin.json +9 -0
  74. package/plugin/.codex-plugin/plugin.json +21 -0
  75. package/plugin/.cursor-plugin/plugin.json +16 -0
  76. package/plugin/.mcp.json +8 -0
  77. package/plugin/README.md +15 -0
  78. package/plugin/deploy/README.md +30 -0
  79. package/plugin/gemini/GEMINI.md +3 -0
  80. package/plugin/gemini/gemini-extension.json +12 -0
  81. package/plugin/gemini/hooks/hooks.json +52 -0
  82. package/plugin/hooks/cursor-hooks.json +25 -0
  83. package/plugin/hooks/hooks.json +56 -0
  84. package/plugin/mcp.json +10 -0
  85. package/plugin/plugin.json +32 -0
  86. package/plugin/runtime/unfairly-intelligence.mjs +5513 -0
  87. package/plugin/scripts/capture.cjs +68 -0
  88. package/plugin/skills/find-company-playbook/SKILL.md +12 -0
  89. package/plugin/skills/publish-learning/SKILL.md +8 -0
package/dist/index.js CHANGED
@@ -21,9 +21,11 @@ await yargs(hideBin(process.argv))
21
21
  }), async (argv) => {
22
22
  await runBare({ yes: argv.yes });
23
23
  })
24
- .command("setup", "Wire MCP for Claude Desktop / Claude Code / Codex on this machine", (y) => y.option("yes", { type: "boolean", alias: "y", default: false }), async (argv) => {
24
+ .command("setup", "Wire MCP for Claude Desktop / Claude Code / Codex on this machine", (y) => y
25
+ .option("yes", { type: "boolean", alias: "y", default: false })
26
+ .option("org", { type: "string", description: "Organization ID from your team's Intelligence invite" }), async (argv) => {
25
27
  const { runSetup } = await import("./cmd/setup.js");
26
- await runSetup({ chainInit: false, yes: argv.yes });
28
+ await runSetup({ chainInit: false, yes: argv.yes, org: argv.org });
27
29
  })
28
30
  .command("login", "Authorize via browser; print export lines for ~/.zshenv", (y) => y.option("quiet", { type: "boolean", alias: "q", default: false }), async (argv) => {
29
31
  const { runLogin } = await import("./cmd/login.js");
@@ -63,6 +65,88 @@ await yargs(hideBin(process.argv))
63
65
  .command("mcp", "Run as stdio MCP server (sync tools)", () => { }, async () => {
64
66
  const { runMcp } = await import("./cmd/mcp.js");
65
67
  await runMcp();
68
+ })
69
+ .command(["intelligence <action>", "pace <action>"], "Capture, upload, or inspect Unfairly Intelligence metadata", (y) => y
70
+ .positional("action", { choices: ["capture", "config", "evidence-scan", "evidence-watch", "flush", "heartbeat", "install", "pause", "playbook-use", "playbooks", "policy", "backfill", "resume", "status", "uninstall"] })
71
+ .option("source", { type: "string", default: "unknown" })
72
+ .option("event", { type: "string", default: "Unknown" })
73
+ .option("output", { type: "string", default: "./ai-pace-managed" })
74
+ .option("command", { type: "string", default: "/usr/local/bin/unfairly" })
75
+ .option("managed-dir", { type: "string", default: "/usr/local/lib/ai-pace" })
76
+ .option("policy", { type: "string", description: "Path to the centrally managed local-evidence policy" })
77
+ .option("evidence-root", { type: "array", string: true, description: "Approved output directory to include in generated policy" })
78
+ .option("include-file-names", { type: "boolean", default: false, description: "Include file basenames in local evidence; disabled by default" })
79
+ .option("query", { type: "string", description: "Search approved company playbooks" })
80
+ .option("playbook-id", { type: "string", description: "Opaque approved playbook ID" })
81
+ .option("playbook-version", { type: "string", description: "Approved playbook version" })
82
+ .option("days", { type: "number", default: 90, description: "Backfill window in days" }), async (argv) => {
83
+ const { runPaceCapture, runPaceFlush, runPaceStatus } = await import("./cmd/pace.js");
84
+ if (argv.action === "capture") {
85
+ await runPaceCapture(argv.source, argv.event);
86
+ }
87
+ else if (argv.action === "config") {
88
+ const { runPaceConfig } = await import("./cmd/pace.js");
89
+ const files = await runPaceConfig({
90
+ outputDir: argv.output,
91
+ command: argv.command,
92
+ managedDir: argv["managed-dir"],
93
+ evidenceRoots: argv["evidence-root"],
94
+ includeFileNames: argv["include-file-names"],
95
+ });
96
+ process.stdout.write(`${JSON.stringify({ files })}\n`);
97
+ }
98
+ else if (argv.action === "evidence-scan") {
99
+ const { runPaceEvidenceScan } = await import("./cmd/pace.js");
100
+ const result = await runPaceEvidenceScan(argv.policy);
101
+ process.stdout.write(`${JSON.stringify(result)}\n`);
102
+ }
103
+ else if (argv.action === "evidence-watch") {
104
+ const { runPaceEvidenceWatch } = await import("./cmd/pace.js");
105
+ await runPaceEvidenceWatch(argv.policy);
106
+ }
107
+ else if (argv.action === "flush") {
108
+ const result = await runPaceFlush();
109
+ process.stdout.write(`${JSON.stringify(result)}\n`);
110
+ }
111
+ else if (argv.action === "heartbeat") {
112
+ const { runPaceHeartbeat } = await import("./cmd/pace.js");
113
+ const result = await runPaceHeartbeat();
114
+ process.stdout.write(`${JSON.stringify(result)}\n`);
115
+ }
116
+ else if (argv.action === "install") {
117
+ const { runPaceInstall } = await import("./cmd/pace.js");
118
+ process.stdout.write(`${JSON.stringify(await runPaceInstall(), null, 2)}\n`);
119
+ }
120
+ else if (argv.action === "playbooks") {
121
+ const { runPacePlaybooks } = await import("./cmd/pace.js");
122
+ const playbooks = await runPacePlaybooks(argv.query);
123
+ process.stdout.write(`${JSON.stringify({ playbooks }, null, 2)}\n`);
124
+ }
125
+ else if (argv.action === "playbook-use") {
126
+ if (!argv["playbook-id"] || !argv["playbook-version"])
127
+ throw new Error("--playbook-id and --playbook-version are required");
128
+ const { runPacePlaybookUse } = await import("./cmd/pace.js");
129
+ process.stdout.write(`${JSON.stringify(await runPacePlaybookUse(argv["playbook-id"], argv["playbook-version"]))}\n`);
130
+ }
131
+ else if (argv.action === "policy") {
132
+ const { runPacePolicy } = await import("./cmd/pace.js");
133
+ process.stdout.write(`${JSON.stringify(runPacePolicy(), null, 2)}\n`);
134
+ }
135
+ else if (argv.action === "backfill") {
136
+ const { runPaceBackfill } = await import("./cmd/pace.js");
137
+ process.stdout.write(`${JSON.stringify(await runPaceBackfill(argv.days))}\n`);
138
+ }
139
+ else if (argv.action === "pause" || argv.action === "resume") {
140
+ const { runPacePause } = await import("./cmd/pace.js");
141
+ process.stdout.write(`${JSON.stringify(await runPacePause(argv.action === "pause"))}\n`);
142
+ }
143
+ else if (argv.action === "uninstall") {
144
+ const { runPaceUninstall } = await import("./cmd/pace.js");
145
+ process.stdout.write(`${JSON.stringify(await runPaceUninstall())}\n`);
146
+ }
147
+ else {
148
+ await runPaceStatus();
149
+ }
66
150
  })
67
151
  .command(inviteCommand)
68
152
  .command(joinCommand)
@@ -91,6 +175,16 @@ async function runBare(opts) {
91
175
  await runSetup({ chainInit: Boolean(repoRoot), yes: opts.yes });
92
176
  return;
93
177
  }
178
+ // Existing users get the same one-command Intelligence install as a cold
179
+ // setup, and a later-installed client is picked up on the next check-in.
180
+ const { detectPaceClients, needsIntelligenceInstall, readOrCreatePaceDevice } = await import("./pace/device.js");
181
+ const device = await readOrCreatePaceDevice();
182
+ const detected = await detectPaceClients();
183
+ if (needsIntelligenceInstall(device, detected)) {
184
+ process.stderr.write("\nInstalling Unfairly Intelligence across detected AI clients…\n");
185
+ const { runPaceInstall } = await import("./cmd/pace.js");
186
+ await runPaceInstall();
187
+ }
94
188
  if (!manifestExists && repoRoot) {
95
189
  // Token exists, no workspace bound, in a repo — offer init only
96
190
  const { runInit } = await import("./cmd/init.js");
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY,CACV,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EACnE,MAAM,CACP,CACF,CAAC;AAEF,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC/B,UAAU,CAAC,UAAU,CAAC;KACtB,KAAK,CAAC,iBAAiB,CAAC;KACxB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,OAAO,CACN,IAAI,EACJ,sFAAsF,EACtF,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;IACd,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,GAAG;IACV,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,2BAA2B;CACtC,CAAC,EACJ,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAc,EAAE,CAAC,CAAC;AAC9C,CAAC,CACF;KACA,OAAO,CACN,OAAO,EACP,mEAAmE,EACnE,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC;KACE,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KAC9D,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sDAAsD,EAAE,CAAC,EAC3G,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACpD,MAAM,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAc,EAAE,GAAG,EAAE,IAAI,CAAC,GAAyB,EAAE,CAAC,CAAC;AACtG,CAAC,CACF;KACA,OAAO,CACN,OAAO,EACP,yDAAyD,EACzD,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EACpE,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACpD,MAAM,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAgB,EAAE,CAAC,CAAC;AACnD,CAAC,CACF;KACA,OAAO,CACN,MAAM,EACN,uDAAuD,EACvD,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC;KACE,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;KACnC,MAAM,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KAC9D,MAAM,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAC9D,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAClD,MAAM,OAAO,CAAC;QACZ,KAAK,EAAE,IAAI,CAAC,KAA2B;QACvC,GAAG,EAAE,IAAI,CAAC,GAAc;QACxB,SAAS,EAAE,IAAI,CAAC,YAAY,CAAY;KACzC,CAAC,CAAC;AACL,CAAC,CACF;KACA,OAAO,CACN,cAAc,EACd,0BAA0B,EAC1B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAChD,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAClD,MAAM,OAAO,CAAC,IAAI,CAAC,KAA2B,CAAC,CAAC;AAClD,CAAC,CACF;KACA,OAAO,CACN,cAAc,EACd,2BAA2B,EAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAChD,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IAClD,MAAM,OAAO,CAAC,IAAI,CAAC,KAA2B,CAAC,CAAC;AAClD,CAAC,CACF;KACA,OAAO,CACN,QAAQ,EACR,iCAAiC,EACjC,GAAG,EAAE,GAAE,CAAC,EACR,KAAK,IAAI,EAAE;IACT,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACtD,MAAM,SAAS,EAAE,CAAC;AACpB,CAAC,CACF;KACA,OAAO,CACN,gBAAgB,EAChB,oCAAoC,EACpC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,EACnE,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACxD,MAAM,UAAU,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC;AACxC,CAAC,CACF;KACA,OAAO,CACN,OAAO,EACP,mDAAmD,EACnD,GAAG,EAAE,GAAE,CAAC,EACR,KAAK,IAAI,EAAE;IACT,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IACpD,MAAM,QAAQ,EAAE,CAAC;AACnB,CAAC,CACF;KACA,OAAO,CACN,KAAK,EACL,sCAAsC,EACtC,GAAG,EAAE,GAAE,CAAC,EACR,KAAK,IAAI,EAAE;IACT,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IAChD,MAAM,MAAM,EAAE,CAAC;AACjB,CAAC,CACF;KACA,OAAO,CACN,CAAC,uBAAuB,EAAE,eAAe,CAAC,EAC1C,4DAA4D,EAC5D,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC;KACE,UAAU,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAU,EAAE,CAAC;KAClO,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;KACxD,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;KACvD,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;KAClE,MAAM,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,yBAAyB,EAAE,CAAC;KACzE,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;KAC5E,MAAM,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qDAAqD,EAAE,CAAC;KACxG,MAAM,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,0DAA0D,EAAE,CAAC;KACjI,MAAM,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,+DAA+D,EAAE,CAAC;KAC/I,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC;KACrF,MAAM,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC;KACrF,MAAM,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE,CAAC;KACxF,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC,EAC5F,KAAK,EAAE,IAAI,EAAE,EAAE;IACb,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;IACtF,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,MAAM,cAAc,CAAC,IAAI,CAAC,MAAgB,EAAE,IAAI,CAAC,KAAe,CAAC,CAAC;IACpE,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC;YAChC,SAAS,EAAE,IAAI,CAAC,MAAgB;YAChC,OAAO,EAAE,IAAI,CAAC,OAAiB;YAC/B,UAAU,EAAE,IAAI,CAAC,aAAa,CAAW;YACzC,aAAa,EAAE,IAAI,CAAC,eAAe,CAAyB;YAC5D,gBAAgB,EAAE,IAAI,CAAC,oBAAoB,CAAY;SACxD,CAAC,CAAC;QACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;QAC3C,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAC9D,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,IAAI,CAAC,MAA4B,CAAC,CAAC;QAC5E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,gBAAgB,EAAE,CAAC;QAC5C,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/D,MAAM,oBAAoB,CAAC,IAAI,CAAC,MAA4B,CAAC,CAAC;IAChE,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;QACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACvC,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACrC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACzD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,cAAc,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IAC/E,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACvC,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAC3D,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,KAA2B,CAAC,CAAC;QAC3E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAC5H,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,aAAa,CAAW,EAAE,IAAI,CAAC,kBAAkB,CAAW,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3I,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACxD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QACtC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,IAAc,CAAC,CAAC,IAAI,CAAC,CAAC;IAC1F,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/D,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACvD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,YAAY,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3F,CAAC;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QACvC,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;SAAM,CAAC;QACN,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC;AACH,CAAC,CACF;KACA,OAAO,CAAC,aAAa,CAAC;KACtB,OAAO,CAAC,WAAW,CAAC;KACpB,OAAO,CAAC,cAAc,CAAC;KACvB,MAAM,EAAE;KACR,IAAI,EAAE;KACN,KAAK,EAAE,CAAC;AAMX,KAAK,UAAU,OAAO,CAAC,IAAc;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IAC3D,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IAE7D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;IAE9C,wEAAwE;IACxE,4EAA4E;IAC5E,yEAAyE;IACzE,wCAAwC;IACxC,IAAI,QAAQ,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAEnC,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;IAC/B,MAAM,cAAc,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;IAE1F,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,qDAAqD;QACrD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACpD,MAAM,QAAQ,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IAED,yEAAyE;IACzE,yEAAyE;IACzE,MAAM,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACjH,MAAM,MAAM,GAAG,MAAM,sBAAsB,EAAE,CAAC;IAC9C,MAAM,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAC;IAC3C,IAAI,wBAAwB,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACzF,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACzD,MAAM,cAAc,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,cAAc,IAAI,QAAQ,EAAE,CAAC;QAChC,gEAAgE;QAChE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QAClD,MAAM,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,iBAAiB;IACjB,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAC/D,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,CAAS;IACjC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -38,27 +38,27 @@ export declare const EVENT_PAYLOAD_SCHEMAS: {
38
38
  author?: string | undefined;
39
39
  }>;
40
40
  }, "strip", z.ZodTypeAny, {
41
- trust_tier: "gold" | "silver" | "bronze";
42
- signal_id: string;
43
- source: "x-listener" | "linkedin-listener" | "hn-listener" | "manual";
44
- dedupe_key: string;
41
+ source: "manual" | "x-listener" | "linkedin-listener" | "hn-listener";
45
42
  payload: {
46
43
  text: string;
47
44
  url?: string | undefined;
48
45
  blocks?: unknown[] | undefined;
49
46
  author?: string | undefined;
50
47
  };
51
- }, {
52
48
  trust_tier: "gold" | "silver" | "bronze";
53
49
  signal_id: string;
54
- source: "x-listener" | "linkedin-listener" | "hn-listener" | "manual";
55
50
  dedupe_key: string;
51
+ }, {
52
+ source: "manual" | "x-listener" | "linkedin-listener" | "hn-listener";
56
53
  payload: {
57
54
  text: string;
58
55
  url?: string | undefined;
59
56
  blocks?: unknown[] | undefined;
60
57
  author?: string | undefined;
61
58
  };
59
+ trust_tier: "gold" | "silver" | "bronze";
60
+ signal_id: string;
61
+ dedupe_key: string;
62
62
  }>;
63
63
  readonly "funding-agent/update.requested": z.ZodObject<{
64
64
  vault_slug: z.ZodString;
@@ -0,0 +1,104 @@
1
+ import { z } from "zod";
2
+ export declare const PaceClientIdSchema: z.ZodEnum<["codex", "claude_code", "cursor", "claude_desktop", "gemini_cli", "openrouter", "chatgpt_desktop"]>;
3
+ export type PaceClientId = z.infer<typeof PaceClientIdSchema>;
4
+ export declare const PaceClientCoverageSchema: z.ZodObject<{
5
+ client: z.ZodEnum<["codex", "claude_code", "cursor", "claude_desktop", "gemini_cli", "openrouter", "chatgpt_desktop"]>;
6
+ installed: z.ZodBoolean;
7
+ configured: z.ZodBoolean;
8
+ version: z.ZodOptional<z.ZodString>;
9
+ }, "strict", z.ZodTypeAny, {
10
+ configured: boolean;
11
+ client: "codex" | "claude_code" | "cursor" | "gemini_cli" | "openrouter" | "claude_desktop" | "chatgpt_desktop";
12
+ installed: boolean;
13
+ version?: string | undefined;
14
+ }, {
15
+ configured: boolean;
16
+ client: "codex" | "claude_code" | "cursor" | "gemini_cli" | "openrouter" | "claude_desktop" | "chatgpt_desktop";
17
+ installed: boolean;
18
+ version?: string | undefined;
19
+ }>;
20
+ export type PaceClientCoverage = z.infer<typeof PaceClientCoverageSchema>;
21
+ declare const DeviceStateSchema: z.ZodObject<{
22
+ installation_id: z.ZodString;
23
+ attestation: z.ZodOptional<z.ZodString>;
24
+ attestation_expires_at: z.ZodOptional<z.ZodString>;
25
+ paused: z.ZodOptional<z.ZodBoolean>;
26
+ last_upload_at: z.ZodOptional<z.ZodString>;
27
+ last_session_sweep_at: z.ZodOptional<z.ZodString>;
28
+ history_backfilled_at: z.ZodOptional<z.ZodString>;
29
+ repository_policy_refreshed_at: z.ZodOptional<z.ZodString>;
30
+ collection_policy_version: z.ZodOptional<z.ZodLiteral<"metadata-v3">>;
31
+ managed_files: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
32
+ intelligence_install: z.ZodOptional<z.ZodObject<{
33
+ version: z.ZodString;
34
+ runtime_entrypoint: z.ZodString;
35
+ marketplace_root: z.ZodString;
36
+ owned_paths: z.ZodArray<z.ZodString, "many">;
37
+ activated_clients: z.ZodArray<z.ZodEnum<["codex", "claude_code", "cursor", "claude_desktop", "gemini_cli", "openrouter", "chatgpt_desktop"]>, "many">;
38
+ installed_at: z.ZodString;
39
+ }, "strict", z.ZodTypeAny, {
40
+ version: string;
41
+ runtime_entrypoint: string;
42
+ marketplace_root: string;
43
+ owned_paths: string[];
44
+ activated_clients: ("codex" | "claude_code" | "cursor" | "gemini_cli" | "openrouter" | "claude_desktop" | "chatgpt_desktop")[];
45
+ installed_at: string;
46
+ }, {
47
+ version: string;
48
+ runtime_entrypoint: string;
49
+ marketplace_root: string;
50
+ owned_paths: string[];
51
+ activated_clients: ("codex" | "claude_code" | "cursor" | "gemini_cli" | "openrouter" | "claude_desktop" | "chatgpt_desktop")[];
52
+ installed_at: string;
53
+ }>>;
54
+ }, "strict", z.ZodTypeAny, {
55
+ installation_id: string;
56
+ collection_policy_version?: "metadata-v3" | undefined;
57
+ attestation?: string | undefined;
58
+ attestation_expires_at?: string | undefined;
59
+ paused?: boolean | undefined;
60
+ last_upload_at?: string | undefined;
61
+ last_session_sweep_at?: string | undefined;
62
+ history_backfilled_at?: string | undefined;
63
+ repository_policy_refreshed_at?: string | undefined;
64
+ managed_files?: string[] | undefined;
65
+ intelligence_install?: {
66
+ version: string;
67
+ runtime_entrypoint: string;
68
+ marketplace_root: string;
69
+ owned_paths: string[];
70
+ activated_clients: ("codex" | "claude_code" | "cursor" | "gemini_cli" | "openrouter" | "claude_desktop" | "chatgpt_desktop")[];
71
+ installed_at: string;
72
+ } | undefined;
73
+ }, {
74
+ installation_id: string;
75
+ collection_policy_version?: "metadata-v3" | undefined;
76
+ attestation?: string | undefined;
77
+ attestation_expires_at?: string | undefined;
78
+ paused?: boolean | undefined;
79
+ last_upload_at?: string | undefined;
80
+ last_session_sweep_at?: string | undefined;
81
+ history_backfilled_at?: string | undefined;
82
+ repository_policy_refreshed_at?: string | undefined;
83
+ managed_files?: string[] | undefined;
84
+ intelligence_install?: {
85
+ version: string;
86
+ runtime_entrypoint: string;
87
+ marketplace_root: string;
88
+ owned_paths: string[];
89
+ activated_clients: ("codex" | "claude_code" | "cursor" | "gemini_cli" | "openrouter" | "claude_desktop" | "chatgpt_desktop")[];
90
+ installed_at: string;
91
+ } | undefined;
92
+ }>;
93
+ export type PaceDeviceState = z.infer<typeof DeviceStateSchema>;
94
+ export declare function paceDevicePath(): string;
95
+ export declare function readOrCreatePaceDevice(): Promise<PaceDeviceState>;
96
+ export declare function writePaceDevice(state: PaceDeviceState): Promise<void>;
97
+ export declare function detectPaceClients(): Promise<PaceClientCoverage[]>;
98
+ export declare function currentDevicePlatform(): {
99
+ platform: string;
100
+ arch: string;
101
+ };
102
+ export declare function needsIntelligenceInstall(state: PaceDeviceState, clients: PaceClientCoverage[]): boolean;
103
+ export {};
104
+ //# sourceMappingURL=device.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.d.ts","sourceRoot":"","sources":["../../src/pace/device.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,kBAAkB,gHAQ7B,CAAC;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;EAK1B,CAAC;AAEZ,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAW1E,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYZ,CAAC;AAEZ,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEhE,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,eAAe,CAAC,CAUvE;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAM3E;AAkBD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA0DvE;AAED,wBAAgB,qBAAqB,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAE1E;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAKvG"}
@@ -0,0 +1,149 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { spawnSync } from "node:child_process";
3
+ import fs from "node:fs/promises";
4
+ import os from "node:os";
5
+ import path from "node:path";
6
+ import { z } from "zod";
7
+ export const PaceClientIdSchema = z.enum([
8
+ "codex",
9
+ "claude_code",
10
+ "cursor",
11
+ "claude_desktop",
12
+ "gemini_cli",
13
+ "openrouter",
14
+ "chatgpt_desktop",
15
+ ]);
16
+ export const PaceClientCoverageSchema = z.object({
17
+ client: PaceClientIdSchema,
18
+ installed: z.boolean(),
19
+ configured: z.boolean(),
20
+ version: z.string().max(200).optional(),
21
+ }).strict();
22
+ const IntelligenceInstallSchema = z.object({
23
+ version: z.string().min(1).max(100),
24
+ runtime_entrypoint: z.string().min(1),
25
+ marketplace_root: z.string().min(1),
26
+ owned_paths: z.array(z.string().min(1)).max(20),
27
+ activated_clients: z.array(PaceClientIdSchema).max(10),
28
+ installed_at: z.string().datetime(),
29
+ }).strict();
30
+ const DeviceStateSchema = z.object({
31
+ installation_id: z.string().uuid(),
32
+ attestation: z.string().min(1).optional(),
33
+ attestation_expires_at: z.string().datetime().optional(),
34
+ paused: z.boolean().optional(),
35
+ last_upload_at: z.string().datetime().optional(),
36
+ last_session_sweep_at: z.string().datetime().optional(),
37
+ history_backfilled_at: z.string().datetime().optional(),
38
+ repository_policy_refreshed_at: z.string().datetime().optional(),
39
+ collection_policy_version: z.literal("metadata-v3").optional(),
40
+ managed_files: z.array(z.string().min(1)).max(20).optional(),
41
+ intelligence_install: IntelligenceInstallSchema.optional(),
42
+ }).strict();
43
+ export function paceDevicePath() {
44
+ return process.env.UNFAIRLY_PACE_DEVICE_STATE ?? path.join(os.homedir(), ".unfairly", "pace", "device.json");
45
+ }
46
+ export async function readOrCreatePaceDevice() {
47
+ const file = paceDevicePath();
48
+ try {
49
+ return DeviceStateSchema.parse(JSON.parse(await fs.readFile(file, "utf8")));
50
+ }
51
+ catch (error) {
52
+ if (error.code !== "ENOENT" && error instanceof SyntaxError)
53
+ throw error;
54
+ }
55
+ const state = { installation_id: randomUUID() };
56
+ await writePaceDevice(state);
57
+ return state;
58
+ }
59
+ export async function writePaceDevice(state) {
60
+ const parsed = DeviceStateSchema.parse(state);
61
+ const file = paceDevicePath();
62
+ await fs.mkdir(path.dirname(file), { recursive: true, mode: 0o700 });
63
+ await fs.writeFile(file, `${JSON.stringify(parsed, null, 2)}\n`, { encoding: "utf8", mode: 0o600 });
64
+ await fs.chmod(file, 0o600).catch(() => undefined);
65
+ }
66
+ function binaryVersion(binary) {
67
+ const result = spawnSync(binary, ["--version"], { encoding: "utf8", timeout: 2_000 });
68
+ if (result.error || result.status !== 0)
69
+ return { installed: false };
70
+ const version = `${result.stdout || result.stderr}`.trim().slice(0, 200);
71
+ return { installed: true, version: version || undefined };
72
+ }
73
+ async function exists(file) {
74
+ try {
75
+ await fs.access(file);
76
+ return true;
77
+ }
78
+ catch {
79
+ return false;
80
+ }
81
+ }
82
+ export async function detectPaceClients() {
83
+ const home = os.homedir();
84
+ const codex = binaryVersion("codex");
85
+ const claude = binaryVersion("claude");
86
+ const gemini = binaryVersion("gemini");
87
+ const cursorCli = binaryVersion("cursor");
88
+ const openrouterConfigured = Boolean(process.env.OPENROUTER_API_KEY);
89
+ const claudeDesktopPath = process.platform === "darwin"
90
+ ? "/Applications/Claude.app"
91
+ : path.join(process.env.APPDATA ?? home, "Claude");
92
+ const chatgptDesktopPath = process.platform === "darwin"
93
+ ? "/Applications/ChatGPT.app"
94
+ : path.join(process.env.LOCALAPPDATA ?? home, "Programs", "ChatGPT");
95
+ const cursorAppPath = process.platform === "darwin"
96
+ ? "/Applications/Cursor.app"
97
+ : path.join(process.env.LOCALAPPDATA ?? home, "Programs", "cursor");
98
+ return [
99
+ {
100
+ client: "codex",
101
+ ...codex,
102
+ configured: codex.installed && await exists(path.join(home, ".codex", "config.toml")),
103
+ },
104
+ {
105
+ client: "claude_code",
106
+ ...claude,
107
+ configured: claude.installed && await exists(path.join(home, ".claude.json")),
108
+ },
109
+ {
110
+ client: "cursor",
111
+ installed: cursorCli.installed || await exists(cursorAppPath),
112
+ configured: await exists(path.join(home, ".cursor", "hooks.json")) || await exists(path.join(home, ".claude", "settings.json")),
113
+ version: cursorCli.version,
114
+ },
115
+ {
116
+ client: "claude_desktop",
117
+ installed: await exists(claudeDesktopPath),
118
+ configured: await exists(process.platform === "darwin"
119
+ ? path.join(home, "Library", "Application Support", "Claude", "claude_desktop_config.json")
120
+ : path.join(process.env.APPDATA ?? home, "Claude", "claude_desktop_config.json")),
121
+ },
122
+ {
123
+ client: "gemini_cli",
124
+ ...gemini,
125
+ configured: gemini.installed && await exists(path.join(home, ".gemini", "settings.json")),
126
+ },
127
+ {
128
+ client: "openrouter",
129
+ installed: openrouterConfigured,
130
+ configured: openrouterConfigured,
131
+ },
132
+ {
133
+ client: "chatgpt_desktop",
134
+ installed: await exists(chatgptDesktopPath),
135
+ configured: false,
136
+ },
137
+ ].map((client) => PaceClientCoverageSchema.parse(client));
138
+ }
139
+ export function currentDevicePlatform() {
140
+ return { platform: process.platform, arch: process.arch };
141
+ }
142
+ export function needsIntelligenceInstall(state, clients) {
143
+ if (!state.intelligence_install)
144
+ return true;
145
+ const hookClients = new Set(["codex", "claude_code", "cursor", "gemini_cli"]);
146
+ const activated = new Set(state.intelligence_install.activated_clients);
147
+ return clients.some((client) => client.installed && hookClients.has(client.client) && !activated.has(client.client));
148
+ }
149
+ //# sourceMappingURL=device.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"device.js","sourceRoot":"","sources":["../../src/pace/device.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,80 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * No-terminal connection for the plugin. On a session start without a
4
+ * collector credential, the plugin starts (or continues) a browser-approved
5
+ * enrollment and hands the person a link. Once approved, it claims a
6
+ * credential bound to this installation. Only these two small files are kept.
7
+ */
8
+ declare const CredentialSchema: z.ZodObject<{
9
+ installation_id: z.ZodString;
10
+ secret: z.ZodString;
11
+ org_id: z.ZodString;
12
+ }, "strict", z.ZodTypeAny, {
13
+ installation_id: string;
14
+ secret: string;
15
+ org_id: string;
16
+ }, {
17
+ installation_id: string;
18
+ secret: string;
19
+ org_id: string;
20
+ }>;
21
+ export type CollectorCredential = z.infer<typeof CredentialSchema>;
22
+ export declare const collectorCredentialPath: () => string;
23
+ export declare const readCollectorCredential: () => Promise<{
24
+ installation_id: string;
25
+ secret: string;
26
+ org_id: string;
27
+ } | null>;
28
+ export declare function collectorAuthorization(credential: CollectorCredential): string;
29
+ export type EnrollmentState = {
30
+ status: "connected";
31
+ orgId: string;
32
+ } | {
33
+ status: "waiting";
34
+ link: string;
35
+ code: string;
36
+ } | {
37
+ status: "unavailable";
38
+ };
39
+ /** One step of the enrollment state machine; safe to call on every session start. */
40
+ export declare function ensureEnrolled(input: {
41
+ apiUrl: string;
42
+ installationId: string;
43
+ platform: "darwin" | "linux" | "win32";
44
+ arch: "x64" | "arm64";
45
+ clients: string[];
46
+ orgHint?: string;
47
+ fetchImpl?: typeof fetch;
48
+ now?: Date;
49
+ }): Promise<EnrollmentState>;
50
+ /**
51
+ * Checks the enrollment this machine is waiting on, without starting a new
52
+ * one. Claims and stores the credential when the person has approved it.
53
+ */
54
+ export declare function pollPendingEnrollment(input: {
55
+ apiUrl: string;
56
+ fetchImpl?: typeof fetch;
57
+ now?: Date;
58
+ }): Promise<EnrollmentState | {
59
+ status: "none";
60
+ }>;
61
+ /**
62
+ * Keeps polling after the connect link is shown, so approving in the browser
63
+ * connects this machine within seconds instead of at the next session start.
64
+ * Stops when connected, when the enrollment ends, or at the deadline.
65
+ */
66
+ export declare function awaitApproval(input: {
67
+ apiUrl: string;
68
+ intervalMs?: number;
69
+ deadlineMs?: number;
70
+ fetchImpl?: typeof fetch;
71
+ sleep?: (ms: number) => Promise<void>;
72
+ clock?: () => number;
73
+ }): Promise<boolean>;
74
+ /** At most one background poller per machine: sessions often start in bursts. */
75
+ export declare function acquireApprovalLock(now?: number): Promise<boolean>;
76
+ export declare const releaseApprovalLock: () => Promise<void | undefined>;
77
+ /** What a SessionStart hook prints: a visible message for the person plus context so the assistant can repeat the link. */
78
+ export declare function sessionStartOutput(state: EnrollmentState, hookEventName?: string): string;
79
+ export {};
80
+ //# sourceMappingURL=enroll.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enroll.d.ts","sourceRoot":"","sources":["../../src/pace/enroll.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;GAKG;AAEH,QAAA,MAAM,gBAAgB;;;;;;;;;;;;EAAwI,CAAC;AAE/J,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAGnE,eAAO,MAAM,uBAAuB,cAAkF,CAAC;AAiBvH,eAAO,MAAM,uBAAuB;;;;SAA8D,CAAC;AAEnG,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,mBAAmB,GAAG,MAAM,CAE9E;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjD;IAAE,MAAM,EAAE,aAAa,CAAA;CAAE,CAAC;AAE9B,qFAAqF;AACrF,wBAAsB,cAAc,CAAC,KAAK,EAAE;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;IACvC,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;IACtB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,GAAG,OAAO,CAAC,eAAe,CAAC,CAoB3B;AAED;;;GAGG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IAAC,GAAG,CAAC,EAAE,IAAI,CAAA;CAAE,GAAG,OAAO,CAAC,eAAe,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAe1J;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,OAAO,CAAC,CAWnB;AAID,iFAAiF;AACjF,wBAAsB,mBAAmB,CAAC,GAAG,SAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAiB5E;AAED,eAAO,MAAM,mBAAmB,iCAA6D,CAAC;AAE9F,2HAA2H;AAC3H,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,EAAE,aAAa,SAAiB,GAAG,MAAM,CAUjG"}