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.
- package/CHANGELOG.md +14 -0
- package/README.md +17 -2
- package/dist/auth/browser-flow.d.ts +9 -0
- package/dist/auth/browser-flow.d.ts.map +1 -1
- package/dist/auth/browser-flow.js +11 -4
- package/dist/auth/browser-flow.js.map +1 -1
- package/dist/cmd/invite.js +2 -2
- package/dist/cmd/invite.js.map +1 -1
- package/dist/cmd/pace.d.ts +101 -0
- package/dist/cmd/pace.d.ts.map +1 -0
- package/dist/cmd/pace.js +426 -0
- package/dist/cmd/pace.js.map +1 -0
- package/dist/cmd/setup.d.ts +2 -0
- package/dist/cmd/setup.d.ts.map +1 -1
- package/dist/cmd/setup.js +20 -6
- package/dist/cmd/setup.js.map +1 -1
- package/dist/index.js +96 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/types/index.d.ts +6 -6
- package/dist/pace/device.d.ts +104 -0
- package/dist/pace/device.d.ts.map +1 -0
- package/dist/pace/device.js +149 -0
- package/dist/pace/device.js.map +1 -0
- package/dist/pace/enroll.d.ts +80 -0
- package/dist/pace/enroll.d.ts.map +1 -0
- package/dist/pace/enroll.js +138 -0
- package/dist/pace/enroll.js.map +1 -0
- package/dist/pace/identity.d.ts +10 -0
- package/dist/pace/identity.d.ts.map +1 -0
- package/dist/pace/identity.js +17 -0
- package/dist/pace/identity.js.map +1 -0
- package/dist/pace/install.d.ts +28 -0
- package/dist/pace/install.d.ts.map +1 -0
- package/dist/pace/install.js +127 -0
- package/dist/pace/install.js.map +1 -0
- package/dist/pace/local-evidence.d.ts +75 -0
- package/dist/pace/local-evidence.d.ts.map +1 -0
- package/dist/pace/local-evidence.js +228 -0
- package/dist/pace/local-evidence.js.map +1 -0
- package/dist/pace/local-sessions.d.ts +48 -0
- package/dist/pace/local-sessions.d.ts.map +1 -0
- package/dist/pace/local-sessions.js +254 -0
- package/dist/pace/local-sessions.js.map +1 -0
- package/dist/pace/managed-config.d.ts +21 -0
- package/dist/pace/managed-config.d.ts.map +1 -0
- package/dist/pace/managed-config.js +102 -0
- package/dist/pace/managed-config.js.map +1 -0
- package/dist/pace/normalize.d.ts +10 -0
- package/dist/pace/normalize.d.ts.map +1 -0
- package/dist/pace/normalize.js +293 -0
- package/dist/pace/normalize.js.map +1 -0
- package/dist/pace/repository.d.ts +72 -0
- package/dist/pace/repository.d.ts.map +1 -0
- package/dist/pace/repository.js +120 -0
- package/dist/pace/repository.js.map +1 -0
- package/dist/pace/schema.d.ts +1325 -0
- package/dist/pace/schema.d.ts.map +1 -0
- package/dist/pace/schema.js +134 -0
- package/dist/pace/schema.js.map +1 -0
- package/dist/pace/session-summary.d.ts +179 -0
- package/dist/pace/session-summary.d.ts.map +1 -0
- package/dist/pace/session-summary.js +140 -0
- package/dist/pace/session-summary.js.map +1 -0
- package/dist/pace/spool.d.ts +6 -0
- package/dist/pace/spool.d.ts.map +1 -0
- package/dist/pace/spool.js +87 -0
- package/dist/pace/spool.js.map +1 -0
- package/dist/pace-runtime.d.ts +2 -0
- package/dist/pace-runtime.d.ts.map +1 -0
- package/dist/pace-runtime.js +67 -0
- package/dist/pace-runtime.js.map +1 -0
- package/package.json +5 -2
- package/plugin/.claude-plugin/plugin.json +9 -0
- package/plugin/.codex-plugin/plugin.json +21 -0
- package/plugin/.cursor-plugin/plugin.json +16 -0
- package/plugin/.mcp.json +8 -0
- package/plugin/README.md +15 -0
- package/plugin/deploy/README.md +30 -0
- package/plugin/gemini/GEMINI.md +3 -0
- package/plugin/gemini/gemini-extension.json +12 -0
- package/plugin/gemini/hooks/hooks.json +52 -0
- package/plugin/hooks/cursor-hooks.json +25 -0
- package/plugin/hooks/hooks.json +56 -0
- package/plugin/mcp.json +10 -0
- package/plugin/plugin.json +32 -0
- package/plugin/runtime/unfairly-intelligence.mjs +5513 -0
- package/plugin/scripts/capture.cjs +68 -0
- package/plugin/skills/find-company-playbook/SKILL.md +12 -0
- package/plugin/skills/publish-learning/SKILL.md +8 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.8.3 — 2026-09-25
|
|
4
|
+
|
|
5
|
+
- **Connect in the same session** — after the person approves the machine in the browser, a detached poller claims the collector credential within seconds, so the session that showed the link starts reporting without a restart.
|
|
6
|
+
- **90-day backfill on first connect** — the first sync fetches the org's approved repositories and uploads the last 90 days of session summaries with their commits.
|
|
7
|
+
- **Members of several organizations** — the connect code survives the organization picker, so a member of more than one org can choose which one the machine reports to.
|
|
8
|
+
|
|
9
|
+
## 0.8.2 — 2026-09-24
|
|
10
|
+
|
|
11
|
+
- **Unfairly Intelligence collector** — `unfairly setup` installs a metadata-only collector for Claude Code, Codex, Cursor, and Gemini CLI. At session boundaries it summarizes each session from the client's own local transcript: model, token counts by type, turns, tool calls and errors, approval denials, subagent use, the approved repository, the SHAs of the session's own commits, and which published skills or company playbooks it used. Prompts, responses, code, commands, paths, branch names, and commit messages never leave the machine; skills outside the published set are counted, not named.
|
|
12
|
+
- **`unfairly setup --org <id>`** — scopes the collector to an organization, for people in several orgs (also `UNFAIRLY_ORG`).
|
|
13
|
+
- **`unfairly intelligence backfill --days 90`** — uploads summaries of sessions already on the machine.
|
|
14
|
+
- **Approved repositories** — the collector pulls the org's approved-repository and skill catalog from the server; remotes are fingerprinted canonically (`github.com/owner/repo`) so every remote form matches.
|
|
15
|
+
- **Non-blocking hooks** — capture hands off to a detached process so AI clients never wait on summarizing or uploading.
|
|
16
|
+
|
|
3
17
|
## 0.8.1 — 2026-05-16
|
|
4
18
|
|
|
5
19
|
- **Fix(pull resilience)** — `unfairly pull` and `unfairly init` no longer abort the entire sync when one vault fails. Each vault is now wrapped in its own try/catch; failures are collected, surfaced at the end with the slug + first error line, and the process exits with code 1 so CI can detect partial failures. Previously a single 404 (e.g. from a duplicate-slug ambiguity) on `hq` would crash the loop and silently skip every vault alphabetically after it. The server fix that triggered this (deterministic dedupe by slug in `/api/sync/{status,pull,push}`) shipped alongside.
|
package/README.md
CHANGED
|
@@ -13,15 +13,19 @@ That's it. One command — auto-detects state and:
|
|
|
13
13
|
|
|
14
14
|
- pops a browser for OAuth (skipped if you already have a token)
|
|
15
15
|
- wires Claude Desktop, Claude Code, and Codex to the Unfairly MCP server
|
|
16
|
+
- installs the Unfairly Intelligence metadata collector in detected Codex, Claude Code, Cursor, and Gemini CLI clients
|
|
17
|
+
- enrolls one versioned user-space runtime under `~/.unfairly` (no global npm install or admin access)
|
|
16
18
|
- writes `UNFAIRLY_MCP_TOKEN` into your shell rc
|
|
17
19
|
- binds `.unfairly/` to your repo (pulls all accessible vaults)
|
|
18
20
|
- stitches `@.unfairly/CLAUDE.md` into your repo's `CLAUDE.md`
|
|
19
21
|
|
|
20
22
|
Re-run any time inside the repo for a daily check-in card showing what your team's been up to.
|
|
21
23
|
|
|
24
|
+
For Unfairly Intelligence alone, most people install the plugin from their AI client's plugin screen instead (see `plugins/ai-pace/README.md`). `unfairly setup --org <org-id>` enrolls a machine into a specific organization, and `unfairly intelligence backfill --days 90` uploads summaries of past local sessions.
|
|
25
|
+
|
|
22
26
|
### Power-user commands
|
|
23
27
|
|
|
24
|
-
`unfairly setup` (machine wiring
|
|
28
|
+
`unfairly setup` (machine wiring), `unfairly intelligence install` (collector install/repair), `unfairly intelligence status`, `unfairly intelligence backfill`, `unfairly intelligence policy`, `unfairly intelligence pause`, `unfairly intelligence uninstall`, `unfairly init` (workspace bind only), `unfairly pull`, `unfairly push`, `unfairly status`, `unfairly watch`, `unfairly mcp`, `unfairly login`. The bare command above delegates to these — they're available when you want fine-grained control.
|
|
25
29
|
|
|
26
30
|
## Commands
|
|
27
31
|
|
|
@@ -33,6 +37,15 @@ Re-run any time inside the repo for a daily check-in card showing what your team
|
|
|
33
37
|
- `unfairly watch` — opt-in fs watcher; debounced 5s auto-push on save
|
|
34
38
|
- `unfairly mcp` — stdio MCP server exposing `pull_vault`, `push_vault`, `sync_status` tools to agent hosts (Claude Code, Codex, cowork)
|
|
35
39
|
|
|
40
|
+
The CLI keeps its browser-authorized credential in the OS keychain (or a
|
|
41
|
+
mode-`0600` fallback). Sync accepts a Supabase session JWT or a human MCP
|
|
42
|
+
credential with the `sync` audience. MCP sync credentials need `read` for
|
|
43
|
+
pull/status and `write` for push. Owner/admin invitation requests require a
|
|
44
|
+
separate `sync-invite-admin` audience with `invite:admin` scope; bound
|
|
45
|
+
organization and room scope are always enforced. Broad `desktop-control`,
|
|
46
|
+
short-lived Hermes child credentials, and agent-runtime credentials cannot be
|
|
47
|
+
used for sync or CLI invitation requests.
|
|
48
|
+
|
|
36
49
|
## Local store layout
|
|
37
50
|
|
|
38
51
|
```
|
|
@@ -64,7 +77,9 @@ const client = createUnfairlyClient({ apiKey: process.env.UNFAIRLY_API_KEY });
|
|
|
64
77
|
const me = await client.me();
|
|
65
78
|
|
|
66
79
|
// Search a vault
|
|
67
|
-
const hits = await client
|
|
80
|
+
const hits = await client
|
|
81
|
+
.vault("growth")
|
|
82
|
+
.search("burn rate", { matchCount: 8 });
|
|
68
83
|
|
|
69
84
|
// Read a document
|
|
70
85
|
const doc = await client.vault("growth").readDocument("operating-plan");
|
|
@@ -2,7 +2,16 @@ export declare function openBrowser(url: string): void;
|
|
|
2
2
|
export type BrowserAuthOptions = {
|
|
3
3
|
tokenName?: string;
|
|
4
4
|
timeoutMs?: number;
|
|
5
|
+
/** Organization ID to scope the token to; the server honours it only for a member. Falls back to UNFAIRLY_ORG. */
|
|
6
|
+
org?: string;
|
|
5
7
|
};
|
|
8
|
+
/** The /cli-auth page URL. An organization ID scopes the minted token to that org when the user is a member. */
|
|
9
|
+
export declare function cliAuthUrl(apiUrl: string, input: {
|
|
10
|
+
cb: string;
|
|
11
|
+
state: string;
|
|
12
|
+
tokenName: string;
|
|
13
|
+
org?: string;
|
|
14
|
+
}): URL;
|
|
6
15
|
/**
|
|
7
16
|
* OAuth handshake via loopback HTTP server. Used by `unfairly setup`,
|
|
8
17
|
* `unfairly login`, and `unfairly init`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-flow.d.ts","sourceRoot":"","sources":["../../src/auth/browser-flow.ts"],"names":[],"mappings":"AAMA,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAc7C;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"browser-flow.d.ts","sourceRoot":"","sources":["../../src/auth/browser-flow.ts"],"names":[],"mappings":"AAMA,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAc7C;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kHAAkH;IAClH,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,gHAAgH;AAChH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,GAAG,CAOrH;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,kBAAuB,GAC5B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA4CxB"}
|
|
@@ -16,6 +16,16 @@ export function openBrowser(url) {
|
|
|
16
16
|
// best-effort
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
|
+
/** The /cli-auth page URL. An organization ID scopes the minted token to that org when the user is a member. */
|
|
20
|
+
export function cliAuthUrl(apiUrl, input) {
|
|
21
|
+
const url = new URL("/cli-auth", apiUrl);
|
|
22
|
+
url.searchParams.set("cb", input.cb);
|
|
23
|
+
url.searchParams.set("state", input.state);
|
|
24
|
+
url.searchParams.set("name", input.tokenName);
|
|
25
|
+
if (input.org && /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(input.org))
|
|
26
|
+
url.searchParams.set("org", input.org);
|
|
27
|
+
return url;
|
|
28
|
+
}
|
|
19
29
|
/**
|
|
20
30
|
* OAuth handshake via loopback HTTP server. Used by `unfairly setup`,
|
|
21
31
|
* `unfairly login`, and `unfairly init`.
|
|
@@ -62,10 +72,7 @@ export async function browserAuthFlow(apiUrl, opts = {}) {
|
|
|
62
72
|
const addr = server.address();
|
|
63
73
|
const port = typeof addr === "object" && addr ? addr.port : 0;
|
|
64
74
|
const cb = `http://localhost:${port}/done`;
|
|
65
|
-
const authUrl =
|
|
66
|
-
authUrl.searchParams.set("cb", cb);
|
|
67
|
-
authUrl.searchParams.set("state", state);
|
|
68
|
-
authUrl.searchParams.set("name", tokenName);
|
|
75
|
+
const authUrl = cliAuthUrl(apiUrl, { cb, state, tokenName, org: opts.org ?? process.env.UNFAIRLY_ORG });
|
|
69
76
|
console.error(`\nOpening browser to authorize:\n ${authUrl.toString()}\n(if it doesn't open, click the link above)\n`);
|
|
70
77
|
openBrowser(authUrl.toString());
|
|
71
78
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-flow.js","sourceRoot":"","sources":["../../src/auth/browser-flow.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C,MAAM,YAAY,GAAG,2kBAA2kB,CAAC;AAEjmB,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,MAAM,GACV,OAAO,CAAC,QAAQ,KAAK,QAAQ;QAC3B,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC5B,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,UAAU,CAAC;IACnB,MAAM,IAAI,GACR,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAClE,IAAI,CAAC;QACH,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACnE,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;IAChB,CAAC;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"browser-flow.js","sourceRoot":"","sources":["../../src/auth/browser-flow.ts"],"names":[],"mappings":"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"}
|
package/dist/cmd/invite.js
CHANGED
|
@@ -12,8 +12,8 @@ export const inviteCommand = {
|
|
|
12
12
|
.option("persona-surface", {
|
|
13
13
|
type: "string",
|
|
14
14
|
demandOption: true,
|
|
15
|
-
choices: ["builder-terminal", "
|
|
16
|
-
describe: "
|
|
15
|
+
choices: ["builder-terminal", "player-web"],
|
|
16
|
+
describe: "Onboarding role: builder-terminal = Champion, player-web = Player",
|
|
17
17
|
})
|
|
18
18
|
.option("persona-workflow", {
|
|
19
19
|
type: "string",
|
package/dist/cmd/invite.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invite.js","sourceRoot":"","sources":["../../src/cmd/invite.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAUlD,MAAM,WAAW,GAAG,yBAAyB,CAAC;AAE9C,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,sDAAsD;IAChE,OAAO,EAAE,CAAC,KAAW,EAAE,EAAE,CACvB,KAAK;SACF,MAAM,CAAC,OAAO,EAAE;QACf,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,qCAAqC;KAChD,CAAC;SACD,MAAM,CAAC,iBAAiB,EAAE;QACzB,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;QAClB,OAAO,EAAE,CAAC,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"invite.js","sourceRoot":"","sources":["../../src/cmd/invite.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAUlD,MAAM,WAAW,GAAG,yBAAyB,CAAC;AAE9C,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,sDAAsD;IAChE,OAAO,EAAE,CAAC,KAAW,EAAE,EAAE,CACvB,KAAK;SACF,MAAM,CAAC,OAAO,EAAE;QACf,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,qCAAqC;KAChD,CAAC;SACD,MAAM,CAAC,iBAAiB,EAAE;QACzB,IAAI,EAAE,QAAQ;QACd,YAAY,EAAE,IAAI;QAClB,OAAO,EAAE,CAAC,kBAAkB,EAAE,YAAY,CAAC;QAC3C,QAAQ,EAAE,mEAAmE;KAC9E,CAAC;SACD,MAAM,CAAC,kBAAkB,EAAE;QAC1B,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE;YACP,UAAU;YACV,WAAW;YACX,qBAAqB;YACrB,eAAe;YACf,WAAW;YACX,YAAY;SACb;QACD,QAAQ,EAAE,wBAAwB;KACnC,CAAC;SACD,MAAM,CAAC,KAAK,EAAE;QACb,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,2DAA2D;KACtE,CAAC;SACD,MAAM,CAAC,KAAK,EAAE;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,YAAY;KACvB,CAAC;IACN,OAAO,EAAE,KAAK,EAAE,IAAgB,EAAE,EAAE;QAClC,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CACX,2EAA2E,CAC5E,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,qBAAqB,EAAE;YACxD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,KAAK,EAAE;aACjC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC;gBACxC,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,CAAC;gBAC1C,QAAQ,EAAE,IAAI,CAAC,GAAG;aACnB,CAAC;SACH,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC7B,OAAO,CAAC,KAAK,CAAC,4BAA4B,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,wBAAwB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;QACpD,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAClC,OAAO,CAAC,GAAG,CACT,0EAA0E,CAC3E,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { detectPaceClients } from "../pace/device.js";
|
|
2
|
+
export declare const RUNTIME_VERSION = "0.8.3";
|
|
3
|
+
export declare const INTELLIGENCE_POLICY: {
|
|
4
|
+
version: "metadata-v3";
|
|
5
|
+
mode: "metadata_only";
|
|
6
|
+
permitted_fields: string[];
|
|
7
|
+
prohibited_content: string[];
|
|
8
|
+
};
|
|
9
|
+
export declare function runPaceCapture(source: string, hookEvent: string): Promise<void>;
|
|
10
|
+
/** How far back the first sync after connecting reads local transcripts. Matches the report's window. */
|
|
11
|
+
export declare const HISTORY_BACKFILL_DAYS = 90;
|
|
12
|
+
/**
|
|
13
|
+
* Summarizes local sessions and uploads them. Does nothing until this machine
|
|
14
|
+
* is connected: before that there is nowhere to send summaries and no
|
|
15
|
+
* approved-repository list, and a session summarized without that list would
|
|
16
|
+
* lose its commits for good. The first sync after connecting reads the last
|
|
17
|
+
* {@link HISTORY_BACKFILL_DAYS} days so the report has history from day one.
|
|
18
|
+
*/
|
|
19
|
+
export declare function runPaceSync(options?: {
|
|
20
|
+
flush?: boolean;
|
|
21
|
+
}): Promise<{
|
|
22
|
+
summarized: number;
|
|
23
|
+
backfilled: boolean;
|
|
24
|
+
} | null>;
|
|
25
|
+
/** Summarizes local sessions changed since the last sweep and queues them for upload. */
|
|
26
|
+
export declare function runPaceSweep(options?: {
|
|
27
|
+
sinceMs?: number;
|
|
28
|
+
collectedVia?: "hook" | "backfill";
|
|
29
|
+
}): Promise<{
|
|
30
|
+
summarized: number;
|
|
31
|
+
queued: number;
|
|
32
|
+
}>;
|
|
33
|
+
/**
|
|
34
|
+
* The Authorization header for Intelligence uploads: this installation's own
|
|
35
|
+
* collector credential (plugin install path) or, failing that, the signed-in
|
|
36
|
+
* CLI token.
|
|
37
|
+
*/
|
|
38
|
+
export declare function paceAuthorization(): Promise<string | null>;
|
|
39
|
+
/** Pulls the organization's approved repositories so sessions can carry repository IDs and commit SHAs. */
|
|
40
|
+
export declare function refreshRepositoryPolicy(options?: {
|
|
41
|
+
force?: boolean;
|
|
42
|
+
}): Promise<{
|
|
43
|
+
repositories: number;
|
|
44
|
+
} | null>;
|
|
45
|
+
/** Summarizes and uploads the last `days` of local sessions so Intelligence has history from day one. */
|
|
46
|
+
export declare function runPaceBackfill(days: number): Promise<{
|
|
47
|
+
summarized: number;
|
|
48
|
+
uploaded: number;
|
|
49
|
+
remaining: number;
|
|
50
|
+
approved_repositories: number | null;
|
|
51
|
+
}>;
|
|
52
|
+
export declare function runPaceFlush(): Promise<{
|
|
53
|
+
sent: number;
|
|
54
|
+
remaining: number;
|
|
55
|
+
sessions_sent: number;
|
|
56
|
+
}>;
|
|
57
|
+
export declare function runPaceHeartbeat(): Promise<{
|
|
58
|
+
installation_id: string;
|
|
59
|
+
clients: Awaited<ReturnType<typeof detectPaceClients>>;
|
|
60
|
+
}>;
|
|
61
|
+
export declare function runPaceInstall(): Promise<{
|
|
62
|
+
runtime_entrypoint: string;
|
|
63
|
+
marketplace_root: string;
|
|
64
|
+
activations: Array<{
|
|
65
|
+
client: string;
|
|
66
|
+
status: "activated" | "skipped";
|
|
67
|
+
detail: string;
|
|
68
|
+
}>;
|
|
69
|
+
verification: {
|
|
70
|
+
heartbeat: "ok";
|
|
71
|
+
live_events: "pending_first_session";
|
|
72
|
+
};
|
|
73
|
+
}>;
|
|
74
|
+
export declare function runPaceStatus(): Promise<void>;
|
|
75
|
+
export declare function runPaceConfig(input: {
|
|
76
|
+
outputDir: string;
|
|
77
|
+
command: string;
|
|
78
|
+
managedDir: string;
|
|
79
|
+
evidenceRoots?: string[];
|
|
80
|
+
includeFileNames?: boolean;
|
|
81
|
+
}): Promise<string[]>;
|
|
82
|
+
export declare function runPacePolicy(): typeof INTELLIGENCE_POLICY;
|
|
83
|
+
export declare function runPacePause(paused: boolean): Promise<{
|
|
84
|
+
paused: boolean;
|
|
85
|
+
}>;
|
|
86
|
+
export declare function runPaceUninstall(): Promise<{
|
|
87
|
+
removed_files: number;
|
|
88
|
+
retained_global_credentials: true;
|
|
89
|
+
}>;
|
|
90
|
+
export declare function runPaceEvidenceScan(policyPath?: string): Promise<{
|
|
91
|
+
observed: number;
|
|
92
|
+
baseline_roots: string[];
|
|
93
|
+
queued: number;
|
|
94
|
+
}>;
|
|
95
|
+
export declare function runPaceEvidenceWatch(policyPath?: string): Promise<void>;
|
|
96
|
+
export declare function runPacePlaybooks(query?: string): Promise<unknown[]>;
|
|
97
|
+
export declare function runPacePlaybookUse(playbookId: string, playbookVersion: string): Promise<{
|
|
98
|
+
workflow_id: string;
|
|
99
|
+
queued: number;
|
|
100
|
+
}>;
|
|
101
|
+
//# sourceMappingURL=pace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pace.d.ts","sourceRoot":"","sources":["../../src/cmd/pace.ts"],"names":[],"mappings":"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"}
|