@vibe-commit/capture 0.4.4 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -1
- package/dist/atomic_write.d.ts +14 -0
- package/dist/atomic_write.js +33 -0
- package/dist/atomic_write.js.map +1 -0
- package/dist/commands/auth.d.ts +2 -2
- package/dist/commands/auth.js +46 -11
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/browser_credential.d.ts +39 -12
- package/dist/commands/browser_credential.js +84 -11
- package/dist/commands/browser_credential.js.map +1 -1
- package/dist/commands/connect.d.ts +8 -2
- package/dist/commands/connect.js +72 -11
- package/dist/commands/connect.js.map +1 -1
- package/dist/commands/credential_problem.d.ts +43 -0
- package/dist/commands/credential_problem.js +81 -0
- package/dist/commands/credential_problem.js.map +1 -0
- package/dist/commands/device_credential.d.ts +47 -0
- package/dist/commands/device_credential.js +275 -0
- package/dist/commands/device_credential.js.map +1 -0
- package/dist/commands/finalize.js +9 -1
- package/dist/commands/finalize.js.map +1 -1
- package/dist/commands/finish_mint.d.ts +73 -0
- package/dist/commands/finish_mint.js +140 -0
- package/dist/commands/finish_mint.js.map +1 -0
- package/dist/commands/probe.d.ts +14 -0
- package/dist/commands/probe.js +29 -0
- package/dist/commands/probe.js.map +1 -0
- package/dist/commands/report.js +6 -1
- package/dist/commands/report.js.map +1 -1
- package/dist/commands/status.d.ts +1 -1
- package/dist/commands/status.js +112 -57
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/why.d.ts +11 -8
- package/dist/commands/why.js +32 -5
- package/dist/commands/why.js.map +1 -1
- package/dist/copy/index.d.ts +1 -1
- package/dist/copy/index.js +1 -1
- package/dist/copy/index.js.map +1 -1
- package/dist/copy/strings.d.ts +214 -3
- package/dist/copy/strings.js +248 -3
- package/dist/copy/strings.js.map +1 -1
- package/dist/credential.d.ts +25 -0
- package/dist/credential.js +41 -3
- package/dist/credential.js.map +1 -1
- package/dist/credential_meta.d.ts +66 -0
- package/dist/credential_meta.js +164 -0
- package/dist/credential_meta.js.map +1 -0
- package/dist/device_mode.d.ts +18 -0
- package/dist/device_mode.js +28 -0
- package/dist/device_mode.js.map +1 -0
- package/dist/hooks/entry.d.ts +5 -0
- package/dist/hooks/entry.js +40 -5
- package/dist/hooks/entry.js.map +1 -1
- package/dist/index.js +33 -3
- package/dist/index.js.map +1 -1
- package/dist/install.d.ts +37 -0
- package/dist/install.js +29 -2
- package/dist/install.js.map +1 -1
- package/dist/oauth/device.d.ts +129 -0
- package/dist/oauth/device.js +194 -0
- package/dist/oauth/device.js.map +1 -0
- package/dist/oauth/discovery.d.ts +5 -0
- package/dist/oauth/discovery.js +6 -0
- package/dist/oauth/discovery.js.map +1 -1
- package/dist/oauth/mint.d.ts +18 -5
- package/dist/oauth/mint.js +18 -5
- package/dist/oauth/mint.js.map +1 -1
- package/dist/oauth/retire.d.ts +64 -0
- package/dist/oauth/retire.js +106 -0
- package/dist/oauth/retire.js.map +1 -0
- package/dist/oauth/signin.d.ts +12 -0
- package/dist/oauth/signin.js +5 -1
- package/dist/oauth/signin.js.map +1 -1
- package/dist/oauth/token.d.ts +1 -0
- package/dist/oauth/token.js +5 -0
- package/dist/oauth/token.js.map +1 -1
- package/dist/oauth/whoami.d.ts +55 -0
- package/dist/oauth/whoami.js +77 -0
- package/dist/oauth/whoami.js.map +1 -0
- package/dist/paths.d.ts +19 -0
- package/dist/paths.js +25 -0
- package/dist/paths.js.map +1 -1
- package/dist/post.d.ts +14 -0
- package/dist/post.js +15 -0
- package/dist/post.js.map +1 -1
- package/dist/state.d.ts +80 -0
- package/dist/state.js +239 -1
- package/dist/state.js.map +1 -1
- package/dist/system_message.d.ts +21 -2
- package/dist/system_message.js +37 -7
- package/dist/system_message.js.map +1 -1
- package/dist/term.d.ts +6 -0
- package/dist/term.js +15 -0
- package/dist/term.js.map +1 -1
- package/dist/update_nudge.d.ts +31 -0
- package/dist/update_nudge.js +127 -0
- package/dist/update_nudge.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `POST /oauth/ingest-credential/retire` — retire the credential this one replaces (G4).
|
|
3
|
+
*
|
|
4
|
+
* ```
|
|
5
|
+
* POST <mcp origin>/oauth/ingest-credential/retire
|
|
6
|
+
* Authorization: Bearer <the NEW vcik_> { "old_token": "vcik_…" }
|
|
7
|
+
*
|
|
8
|
+
* 200 { "retired": true } the old credential was revoked with reason 'rotated'
|
|
9
|
+
* 200 { "retired": false } the ONE uniform answer for not-found / other user / other org /
|
|
10
|
+
* already revoked / same token — the server never says which
|
|
11
|
+
* 401 opaque · 400 { "error": "invalid_request" } · 429 retry-after · 404 an older server
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* ## Self-revoke (brief A3)
|
|
15
|
+
*
|
|
16
|
+
* The same route, body exactly `{ "self": true }`, Bearer = the credential to revoke: the bearer's own
|
|
17
|
+
* row is revoked (`user_revoke`) and the answer is 200 `{ "retired": true }`. It exists for the one
|
|
18
|
+
* case the two-token form cannot serve: a re-auth the user DECLINES after the browser landed in a
|
|
19
|
+
* different workspace. The credential just minted there is the one to remove, and the only credential
|
|
20
|
+
* this machine holds in that workspace is that one. A 404 (a server without it) or any failure leaves
|
|
21
|
+
* the credential live and unused, and the caller says where to revoke it.
|
|
22
|
+
*
|
|
23
|
+
* Proof of possession: the caller holds BOTH tokens, over the same TLS every ingest already uses.
|
|
24
|
+
* The old token travels in the body, never in argv or a URL. A 404 means "this server cannot
|
|
25
|
+
* retire", which the caller prints as "unknown" rather than as a failure — nothing is lost either
|
|
26
|
+
* way, the old row simply lives until it expires and shows in Settings.
|
|
27
|
+
*
|
|
28
|
+
* ⛔ `old_token` IS A SECRET, so nothing in this module renders a response body or an error.
|
|
29
|
+
*
|
|
30
|
+
* @provenance vibecommit-mcp src/transport/server.ts — POST /oauth/ingest-credential/retire, retyped
|
|
31
|
+
*/
|
|
32
|
+
import { HTTP_TIMEOUT_MS } from "./signin.js";
|
|
33
|
+
export const RETIRE_PATH = "/oauth/ingest-credential/retire";
|
|
34
|
+
export function retireUrl(mcpEndpoint) {
|
|
35
|
+
return new URL(RETIRE_PATH, mcpEndpoint).toString();
|
|
36
|
+
}
|
|
37
|
+
export async function retireCredential(mcpEndpoint, replacement, old, deps) {
|
|
38
|
+
const controller = new AbortController();
|
|
39
|
+
const timer = setTimeout(() => controller.abort(), deps.timeoutMs ?? HTTP_TIMEOUT_MS);
|
|
40
|
+
try {
|
|
41
|
+
const res = await deps.fetch(retireUrl(mcpEndpoint), {
|
|
42
|
+
method: "POST",
|
|
43
|
+
headers: {
|
|
44
|
+
authorization: `Bearer ${replacement.expose()}`,
|
|
45
|
+
"content-type": "application/json",
|
|
46
|
+
accept: "application/json",
|
|
47
|
+
},
|
|
48
|
+
body: JSON.stringify({ old_token: old.expose() }),
|
|
49
|
+
signal: controller.signal,
|
|
50
|
+
redirect: "error",
|
|
51
|
+
});
|
|
52
|
+
if (res.status === 404)
|
|
53
|
+
return { kind: "unknown" };
|
|
54
|
+
if (res.status !== 200)
|
|
55
|
+
return { kind: "failed" };
|
|
56
|
+
const doc = (await res.json());
|
|
57
|
+
if (doc?.retired === true)
|
|
58
|
+
return { kind: "retired" };
|
|
59
|
+
if (doc?.retired === false)
|
|
60
|
+
return { kind: "not-retired" };
|
|
61
|
+
return { kind: "failed" };
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return { kind: "failed" };
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
clearTimeout(timer);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Revoke `credential` with itself as the bearer — see "Self-revoke" above.
|
|
72
|
+
*
|
|
73
|
+
* `retired` only on a clean 200 `{ retired: true }`; a 404 is `unknown` (an older server); everything
|
|
74
|
+
* else — 401, 400, 429, 5xx, a timeout, a body off-contract — is `failed`. Never throws, and the
|
|
75
|
+
* result carries nothing of the credential.
|
|
76
|
+
*/
|
|
77
|
+
export async function selfRevokeCredential(mcpEndpoint, credential, deps) {
|
|
78
|
+
const controller = new AbortController();
|
|
79
|
+
const timer = setTimeout(() => controller.abort(), deps.timeoutMs ?? HTTP_TIMEOUT_MS);
|
|
80
|
+
try {
|
|
81
|
+
const res = await deps.fetch(retireUrl(mcpEndpoint), {
|
|
82
|
+
method: "POST",
|
|
83
|
+
headers: {
|
|
84
|
+
authorization: `Bearer ${credential.expose()}`,
|
|
85
|
+
"content-type": "application/json",
|
|
86
|
+
accept: "application/json",
|
|
87
|
+
},
|
|
88
|
+
body: JSON.stringify({ self: true }),
|
|
89
|
+
signal: controller.signal,
|
|
90
|
+
redirect: "error",
|
|
91
|
+
});
|
|
92
|
+
if (res.status === 404)
|
|
93
|
+
return { kind: "unknown" };
|
|
94
|
+
if (res.status !== 200)
|
|
95
|
+
return { kind: "failed" };
|
|
96
|
+
const doc = (await res.json());
|
|
97
|
+
return doc?.retired === true ? { kind: "retired" } : { kind: "failed" };
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
return { kind: "failed" };
|
|
101
|
+
}
|
|
102
|
+
finally {
|
|
103
|
+
clearTimeout(timer);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=retire.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retire.js","sourceRoot":"","sources":["../../src/oauth/retire.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,CAAC,MAAM,WAAW,GAAG,iCAAiC,CAAC;AAiB7D,MAAM,UAAU,SAAS,CAAC,WAAmB;IAC3C,OAAO,IAAI,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,WAAmB,EACnB,WAA6B,EAC7B,GAAqB,EACrB,IAAgB;IAEhB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,SAAS,IAAI,eAAe,CAAC,CAAC;IACtF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;YACnD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,WAAW,CAAC,MAAM,EAAE,EAAE;gBAC/C,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;aAC3B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;YACjD,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACnD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAiC,CAAC;QAC/D,IAAI,GAAG,EAAE,OAAO,KAAK,IAAI;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACtD,IAAI,GAAG,EAAE,OAAO,KAAK,KAAK;YAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QAC3D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,WAAmB,EACnB,UAA4B,EAC5B,IAAgB;IAEhB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,SAAS,IAAI,eAAe,CAAC,CAAC;IACtF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE;YACnD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,UAAU,CAAC,MAAM,EAAE,EAAE;gBAC9C,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;aAC3B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YACpC,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACnD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAiC,CAAC;QAC/D,OAAO,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC"}
|
package/dist/oauth/signin.d.ts
CHANGED
|
@@ -54,6 +54,14 @@ export interface SignInDeps {
|
|
|
54
54
|
};
|
|
55
55
|
readonly deadlineMs?: number;
|
|
56
56
|
readonly timeoutMs?: number;
|
|
57
|
+
/** Ask the authorize page to bind this org — see `buildAuthorizeUrl`. */
|
|
58
|
+
readonly orgId?: string;
|
|
59
|
+
/**
|
|
60
|
+
* `CR-234d`. When the browser could not be opened, stop with `no-browser` BEFORE printing the URL or
|
|
61
|
+
* waiting — the caller falls back to the device flow, because a loopback listener on a machine with no
|
|
62
|
+
* browser waits out the whole deadline for nobody. Off, the URL is printed and the wait runs, as it always has.
|
|
63
|
+
*/
|
|
64
|
+
readonly fallbackOnNoBrowser?: boolean;
|
|
57
65
|
}
|
|
58
66
|
export type SignIn = {
|
|
59
67
|
readonly kind: "ok";
|
|
@@ -81,6 +89,10 @@ export type SignIn = {
|
|
|
81
89
|
readonly kind: "unreachable";
|
|
82
90
|
} | {
|
|
83
91
|
readonly kind: "malformed";
|
|
92
|
+
}
|
|
93
|
+
/** `fallbackOnNoBrowser` was set and the browser could not be opened. Nothing was printed or bound. */
|
|
94
|
+
| {
|
|
95
|
+
readonly kind: "no-browser";
|
|
84
96
|
};
|
|
85
97
|
/**
|
|
86
98
|
* Open a URL in the platform browser.
|
package/dist/oauth/signin.js
CHANGED
|
@@ -104,8 +104,12 @@ export async function signIn(deps) {
|
|
|
104
104
|
challenge: pkce.challenge,
|
|
105
105
|
state,
|
|
106
106
|
redirectUri: loopback.redirectUri,
|
|
107
|
+
...(deps.orgId === undefined ? {} : { orgId: deps.orgId }),
|
|
107
108
|
});
|
|
108
|
-
|
|
109
|
+
const opened = deps.openBrowser(url);
|
|
110
|
+
if (!opened && deps.fallbackOnNoBrowser === true)
|
|
111
|
+
return { kind: "no-browser" };
|
|
112
|
+
deps.onAuthorizeUrl(url, opened);
|
|
109
113
|
callback = await loopback.result;
|
|
110
114
|
}
|
|
111
115
|
finally {
|
package/dist/oauth/signin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signin.js","sourceRoot":"","sources":["../../src/oauth/signin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAG3C,OAAO,EAAE,QAAQ,EAAuC,MAAM,gBAAgB,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAmC,MAAM,WAAW,CAAC;AAClF,OAAO,EAAE,QAAQ,EAAmC,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAkC,MAAM,cAAc,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAqB,MAAM,YAAY,CAAC;AAE9F;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAG,MAAM,CAAC;AAE7C,mFAAmF;AACnF,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"signin.js","sourceRoot":"","sources":["../../src/oauth/signin.ts"],"names":[],"mappings":"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"}
|
package/dist/oauth/token.d.ts
CHANGED
package/dist/oauth/token.js
CHANGED
|
@@ -178,6 +178,11 @@ export function buildAuthorizeUrl(authorizationEndpoint, input) {
|
|
|
178
178
|
url.searchParams.set("state", input.state);
|
|
179
179
|
url.searchParams.set("code_challenge", input.challenge);
|
|
180
180
|
url.searchParams.set("code_challenge_method", CHALLENGE_METHOD);
|
|
181
|
+
// Re-auth binds the org of the credential it replaces (plan item 2(a), brief A1). Only ever
|
|
182
|
+
// set from a FILE credential the server just confirmed; the web page drops anything that is
|
|
183
|
+
// not a UUID, and the membership check at authorize-complete is the server's.
|
|
184
|
+
if (input.orgId !== undefined)
|
|
185
|
+
url.searchParams.set("org_id", input.orgId);
|
|
181
186
|
return url.toString();
|
|
182
187
|
}
|
|
183
188
|
//# sourceMappingURL=token.js.map
|
package/dist/oauth/token.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/oauth/token.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/oauth/token.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `GET /ingest/v1/whoami` — does the server still accept this credential, and whose is it?
|
|
3
|
+
*
|
|
4
|
+
* The probe `connect` runs BEFORE it sends (R12) and `auth` runs on a credential it is about to
|
|
5
|
+
* replace and on the one it just minted. Slice 1's answer to G1: `connect` printed "Capturing" over a
|
|
6
|
+
* dead credential because nothing asked the server.
|
|
7
|
+
*
|
|
8
|
+
* ```
|
|
9
|
+
* GET <ingest origin>/ingest/v1/whoami Authorization: Bearer vcik_…
|
|
10
|
+
* 200 { credential_id, org_id, org_name, expires_at, account } account = GitHub handle | null
|
|
11
|
+
* 401 { "error": "unauthorized" } opaque — the reason is in the server's logs only
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* ⛔ THREE OUTCOMES, AND ONLY ONE OF THEM IS "DEAD". `unauthorized` is a 401 and nothing else.
|
|
15
|
+
* Everything that is not a clean 200 or a clean 401 — a 5xx, a 404 from a server that predates the
|
|
16
|
+
* route, a timeout, a network error, a body that is not what the contract says — is `unavailable`:
|
|
17
|
+
* the server did not answer the question, so the caller must not conclude the credential is dead
|
|
18
|
+
* (that is the "a blip is not a failed install" rule, `connect.ts`).
|
|
19
|
+
*
|
|
20
|
+
* The server stamps `last_used_at` for a probe and never `last_ingest_at`, so a whoami is not a
|
|
21
|
+
* capture in Settings.
|
|
22
|
+
*
|
|
23
|
+
* @provenance vibecommit-mcp src/transport/server.ts — GET /ingest/v1/whoami request and response, retyped
|
|
24
|
+
*/
|
|
25
|
+
import type { IngestCredential } from "../credential.js";
|
|
26
|
+
export declare const WHOAMI_PATH = "/ingest/v1/whoami";
|
|
27
|
+
/** Long enough for a healthy server, short enough that `connect` never feels hung (R12). */
|
|
28
|
+
export declare const WHOAMI_TIMEOUT_MS = 2000;
|
|
29
|
+
export interface WhoamiFacts {
|
|
30
|
+
readonly credentialId: string;
|
|
31
|
+
readonly orgId: string;
|
|
32
|
+
readonly orgName: string;
|
|
33
|
+
/** ISO 8601, or null when the server omitted it. */
|
|
34
|
+
readonly expiresAt: string | null;
|
|
35
|
+
/** The approver's GitHub handle, or null. */
|
|
36
|
+
readonly account: string | null;
|
|
37
|
+
}
|
|
38
|
+
export type Whoami = ({
|
|
39
|
+
readonly kind: "ok";
|
|
40
|
+
} & WhoamiFacts)
|
|
41
|
+
/** 401, and only 401. */
|
|
42
|
+
| {
|
|
43
|
+
readonly kind: "unauthorized";
|
|
44
|
+
}
|
|
45
|
+
/** No answer to the question: 5xx, 404, timeout, network, or a body off-contract. */
|
|
46
|
+
| {
|
|
47
|
+
readonly kind: "unavailable";
|
|
48
|
+
};
|
|
49
|
+
export interface WhoamiDeps {
|
|
50
|
+
readonly fetch: typeof fetch;
|
|
51
|
+
readonly timeoutMs?: number;
|
|
52
|
+
}
|
|
53
|
+
/** The probe URL, on the same origin as the ingest URL the credential is sent to. */
|
|
54
|
+
export declare function whoamiUrl(ingestUrl: string): string;
|
|
55
|
+
export declare function whoami(ingestUrl: string, credential: IngestCredential, deps: WhoamiDeps): Promise<Whoami>;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `GET /ingest/v1/whoami` — does the server still accept this credential, and whose is it?
|
|
3
|
+
*
|
|
4
|
+
* The probe `connect` runs BEFORE it sends (R12) and `auth` runs on a credential it is about to
|
|
5
|
+
* replace and on the one it just minted. Slice 1's answer to G1: `connect` printed "Capturing" over a
|
|
6
|
+
* dead credential because nothing asked the server.
|
|
7
|
+
*
|
|
8
|
+
* ```
|
|
9
|
+
* GET <ingest origin>/ingest/v1/whoami Authorization: Bearer vcik_…
|
|
10
|
+
* 200 { credential_id, org_id, org_name, expires_at, account } account = GitHub handle | null
|
|
11
|
+
* 401 { "error": "unauthorized" } opaque — the reason is in the server's logs only
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* ⛔ THREE OUTCOMES, AND ONLY ONE OF THEM IS "DEAD". `unauthorized` is a 401 and nothing else.
|
|
15
|
+
* Everything that is not a clean 200 or a clean 401 — a 5xx, a 404 from a server that predates the
|
|
16
|
+
* route, a timeout, a network error, a body that is not what the contract says — is `unavailable`:
|
|
17
|
+
* the server did not answer the question, so the caller must not conclude the credential is dead
|
|
18
|
+
* (that is the "a blip is not a failed install" rule, `connect.ts`).
|
|
19
|
+
*
|
|
20
|
+
* The server stamps `last_used_at` for a probe and never `last_ingest_at`, so a whoami is not a
|
|
21
|
+
* capture in Settings.
|
|
22
|
+
*
|
|
23
|
+
* @provenance vibecommit-mcp src/transport/server.ts — GET /ingest/v1/whoami request and response, retyped
|
|
24
|
+
*/
|
|
25
|
+
import { CLIENT_VERSION, CLIENT_VERSION_HEADER } from "../version.js";
|
|
26
|
+
export const WHOAMI_PATH = "/ingest/v1/whoami";
|
|
27
|
+
/** Long enough for a healthy server, short enough that `connect` never feels hung (R12). */
|
|
28
|
+
export const WHOAMI_TIMEOUT_MS = 2_000;
|
|
29
|
+
/** The probe URL, on the same origin as the ingest URL the credential is sent to. */
|
|
30
|
+
export function whoamiUrl(ingestUrl) {
|
|
31
|
+
return new URL(WHOAMI_PATH, ingestUrl).toString();
|
|
32
|
+
}
|
|
33
|
+
const nonEmpty = (v) => typeof v === "string" && v !== "";
|
|
34
|
+
export async function whoami(ingestUrl, credential, deps) {
|
|
35
|
+
const controller = new AbortController();
|
|
36
|
+
const timer = setTimeout(() => controller.abort(), deps.timeoutMs ?? WHOAMI_TIMEOUT_MS);
|
|
37
|
+
try {
|
|
38
|
+
const res = await deps.fetch(whoamiUrl(ingestUrl), {
|
|
39
|
+
method: "GET",
|
|
40
|
+
headers: {
|
|
41
|
+
// The request boundary — a credential's plaintext is used here and in `post.ts`.
|
|
42
|
+
authorization: `Bearer ${credential.expose()}`,
|
|
43
|
+
accept: "application/json",
|
|
44
|
+
[CLIENT_VERSION_HEADER.toLowerCase()]: CLIENT_VERSION,
|
|
45
|
+
},
|
|
46
|
+
signal: controller.signal,
|
|
47
|
+
redirect: "error",
|
|
48
|
+
});
|
|
49
|
+
if (res.status === 401)
|
|
50
|
+
return { kind: "unauthorized" };
|
|
51
|
+
if (res.status !== 200)
|
|
52
|
+
return { kind: "unavailable" };
|
|
53
|
+
// The timer stays armed through the body: a server that sends headers and then stalls is
|
|
54
|
+
// still a probe that must not hang `connect`.
|
|
55
|
+
const doc = (await res.json());
|
|
56
|
+
if (typeof doc !== "object" || doc === null)
|
|
57
|
+
return { kind: "unavailable" };
|
|
58
|
+
if (!nonEmpty(doc.credential_id) || !nonEmpty(doc.org_id) || !nonEmpty(doc.org_name)) {
|
|
59
|
+
return { kind: "unavailable" };
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
kind: "ok",
|
|
63
|
+
credentialId: doc.credential_id,
|
|
64
|
+
orgId: doc.org_id,
|
|
65
|
+
orgName: doc.org_name,
|
|
66
|
+
expiresAt: nonEmpty(doc.expires_at) ? doc.expires_at : null,
|
|
67
|
+
account: nonEmpty(doc.account) ? doc.account : null,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return { kind: "unavailable" };
|
|
72
|
+
}
|
|
73
|
+
finally {
|
|
74
|
+
clearTimeout(timer);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=whoami.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/oauth/whoami.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtE,MAAM,CAAC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAE/C,4FAA4F;AAC5F,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAwBvC,qFAAqF;AACrF,MAAM,UAAU,SAAS,CAAC,SAAiB;IACzC,OAAO,IAAI,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;AAEhF,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,SAAiB,EACjB,UAA4B,EAC5B,IAAgB;IAEhB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,SAAS,IAAI,iBAAiB,CAAC,CAAC;IACxF,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;YACjD,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,iFAAiF;gBACjF,aAAa,EAAE,UAAU,UAAU,CAAC,MAAM,EAAE,EAAE;gBAC9C,MAAM,EAAE,kBAAkB;gBAC1B,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC,EAAE,cAAc;aACtD;YACD,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,QAAQ,EAAE,OAAO;SAClB,CAAC,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;QACxD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG;YAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QACvD,yFAAyF;QACzF,8CAA8C;QAC9C,MAAM,GAAG,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAmC,CAAC;QACjE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;YAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QAC5E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACrF,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;QACjC,CAAC;QACD,OAAO;YACL,IAAI,EAAE,IAAI;YACV,YAAY,EAAE,GAAG,CAAC,aAAa;YAC/B,KAAK,EAAE,GAAG,CAAC,MAAM;YACjB,OAAO,EAAE,GAAG,CAAC,QAAQ;YACrB,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI;YAC3D,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;SACpD,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;IACjC,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;AACH,CAAC"}
|
package/dist/paths.d.ts
CHANGED
|
@@ -37,6 +37,16 @@ export declare function sessionPath(home: string): string;
|
|
|
37
37
|
* the three negative `systemMessage` states use a per-session file.
|
|
38
38
|
*/
|
|
39
39
|
export declare function stateDir(home: string): string;
|
|
40
|
+
/**
|
|
41
|
+
* What this machine knows ABOUT its credentials, keyed by fingerprint — `R10`.
|
|
42
|
+
*
|
|
43
|
+
* A SIDECAR and not extra keys in `credentials.json`: hooks learn things about a credential (the
|
|
44
|
+
* server's expiry header) and must never rewrite the secret file, because a hook holding the old
|
|
45
|
+
* token could race a re-auth and write it back. `credentials.json` stays `{ token }`.
|
|
46
|
+
*/
|
|
47
|
+
export declare function credentialMetaPath(home: string): string;
|
|
48
|
+
/** The update nudge's 24-hour cache of what `GET /client/latest` said — `13A`. */
|
|
49
|
+
export declare function updateCheckPath(home: string): string;
|
|
40
50
|
/**
|
|
41
51
|
* Once-per-session marker for a `systemMessage` state.
|
|
42
52
|
*
|
|
@@ -71,6 +81,15 @@ export declare function sessionNoticePath(home: string, sessionId: string, state
|
|
|
71
81
|
* (`system_message.ts`'s `utcDay`), never read from a local clock here.
|
|
72
82
|
*/
|
|
73
83
|
export declare function repoDayNoticePath(home: string, repoKey: string, day: string, state: string): string;
|
|
84
|
+
/**
|
|
85
|
+
* Once-per-`(machine, day)` marker — `CR-234d`, state 5 ("this machine's credential ends …", decision 12A).
|
|
86
|
+
*
|
|
87
|
+
* State 4's rule applied to a thing that is about the MACHINE and not a repo: `PreCompact` mints a new
|
|
88
|
+
* `session_id` mid-task, and a repo key would repeat the warning once per checkout. `key` is the state name
|
|
89
|
+
* plus the credential's fingerprint, so replacing the credential re-arms it (the new one has a new end date).
|
|
90
|
+
* `day` is a UTC `YYYY-MM-DD` supplied by the caller, never read from a local clock here.
|
|
91
|
+
*/
|
|
92
|
+
export declare function machineDayNoticePath(home: string, day: string, key: string): string;
|
|
74
93
|
/**
|
|
75
94
|
* The binding key of the client's send state — `CR-017d`, the client half of
|
|
76
95
|
* `CR-017`.
|
package/dist/paths.js
CHANGED
|
@@ -50,6 +50,20 @@ export function sessionPath(home) {
|
|
|
50
50
|
export function stateDir(home) {
|
|
51
51
|
return join(rootDir(home), "state");
|
|
52
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* What this machine knows ABOUT its credentials, keyed by fingerprint — `R10`.
|
|
55
|
+
*
|
|
56
|
+
* A SIDECAR and not extra keys in `credentials.json`: hooks learn things about a credential (the
|
|
57
|
+
* server's expiry header) and must never rewrite the secret file, because a hook holding the old
|
|
58
|
+
* token could race a re-auth and write it back. `credentials.json` stays `{ token }`.
|
|
59
|
+
*/
|
|
60
|
+
export function credentialMetaPath(home) {
|
|
61
|
+
return join(stateDir(home), "credential-meta.json");
|
|
62
|
+
}
|
|
63
|
+
/** The update nudge's 24-hour cache of what `GET /client/latest` said — `13A`. */
|
|
64
|
+
export function updateCheckPath(home) {
|
|
65
|
+
return join(stateDir(home), "update-check.json");
|
|
66
|
+
}
|
|
53
67
|
/**
|
|
54
68
|
* Once-per-session marker for a `systemMessage` state.
|
|
55
69
|
*
|
|
@@ -88,6 +102,17 @@ export function sessionNoticePath(home, sessionId, state) {
|
|
|
88
102
|
export function repoDayNoticePath(home, repoKey, day, state) {
|
|
89
103
|
return join(stateDir(home), "notices", "repo-day", repoDigest(repoKey), sanitise(day), `${sanitise(state)}.json`);
|
|
90
104
|
}
|
|
105
|
+
/**
|
|
106
|
+
* Once-per-`(machine, day)` marker — `CR-234d`, state 5 ("this machine's credential ends …", decision 12A).
|
|
107
|
+
*
|
|
108
|
+
* State 4's rule applied to a thing that is about the MACHINE and not a repo: `PreCompact` mints a new
|
|
109
|
+
* `session_id` mid-task, and a repo key would repeat the warning once per checkout. `key` is the state name
|
|
110
|
+
* plus the credential's fingerprint, so replacing the credential re-arms it (the new one has a new end date).
|
|
111
|
+
* `day` is a UTC `YYYY-MM-DD` supplied by the caller, never read from a local clock here.
|
|
112
|
+
*/
|
|
113
|
+
export function machineDayNoticePath(home, day, key) {
|
|
114
|
+
return join(stateDir(home), "notices", "machine-day", sanitise(day), `${sanitise(key)}.json`);
|
|
115
|
+
}
|
|
91
116
|
/**
|
|
92
117
|
* Per-`(repo, session)` send state — `CR-018`'s offset ledger, backlog and
|
|
93
118
|
* terminal stop, keyed by `CR-017d`.
|
package/dist/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEtC,0FAA0F;AAC1F,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;AACnC,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,kBAAkB,CAAC,CAAC;AACjD,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC;AAC7C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,SAAiB,EAAE,KAAa;IAC9E,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACzF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAY,EACZ,OAAe,EACf,GAAW,EACX,KAAa;IAEb,OAAO,IAAI,CACT,QAAQ,CAAC,IAAI,CAAC,EACd,SAAS,EACT,UAAU,EACV,UAAU,CAAC,OAAO,CAAC,EACnB,QAAQ,CAAC,GAAG,CAAC,EACb,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAC1B,CAAC;AACJ,CAAC;AAwBD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,GAAe;IAC5D,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAC/C,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AACtD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,OAAe;IAC3D,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,8EAA8E;AAC9E,SAAS,UAAU,CAAC,OAAe;IACjC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACzE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,GAAsB;IACjE,MAAM,UAAU,GAAG,GAAG,CAAC,iBAAiB,CAAC;IACzC,MAAM,IAAI,GACR,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE;QAClD,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE;QACnB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,GAAsB;IACtE,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;IAClC,MAAM,IAAI,GACR,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE;QAClD,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE;QACnB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,sBAAsB,GAAG,mBAAmB,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,IAAY;IAC1D,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,IAAY;IAC3D,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,QAAgB,CAAC;IACrB,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAC9B,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAAE,OAAO,KAAK,CAAC;IACxD,MAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChE,qEAAqE;IACrE,OAAO,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,sBAAsB,CAAC;AACxE,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,YAAY,CAAC,cAAsB;IACjD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7D,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC;AAC/E,CAAC;AAED,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAEnC;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAAE,OAAO,IAAI,CAAC;IACzF,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACzD,OAAO,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAgB;IACvD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC7D,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,GAAG,GAAG,SAAS,OAAO,EAAE,CAAC;IAC/B,OAAO,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY,EAAE,SAAiB;IACtD,IAAI,QAAgB,CAAC;IACrB,IAAI,aAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;QAC9B,aAAa,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,aAAa,KAAK,QAAQ,IAAI,aAAa,CAAC,UAAU,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;AAChF,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,WAAW,CAAC,KAAwB,EAAE,SAAiB;IACrE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,QAAQ,CAAC,KAAa;IAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACrE,OAAO,OAAO,KAAK,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AACjE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,GAAsB;IACrE,MAAM,UAAU,GAAG,GAAG,CAAC,iBAAiB,CAAC;IACzC,MAAM,IAAI,GACR,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE;QAClD,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE;QACnB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,GAAsB;IACjE,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;IAClC,MAAM,IAAI,GACR,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE;QAClD,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE;QACnB,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3B,OAAO,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAC7C,CAAC"}
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
|
package/dist/post.d.ts
CHANGED
|
@@ -263,11 +263,23 @@ export type SendOutcome = {
|
|
|
263
263
|
* a resend idempotent, so keeping on doubt costs a duplicate request, never a duplicate row.
|
|
264
264
|
*/
|
|
265
265
|
readonly inferredStored: number | null;
|
|
266
|
+
/**
|
|
267
|
+
* `X-Credential-Expires` (`CR-234d`, D219): where THIS credential stands — an ISO 8601 instant on every
|
|
268
|
+
* ingest 2xx. `null` when absent (a server that predates it) or not a date. The hook persists it to the
|
|
269
|
+
* credential-meta sidecar so state 5 can warn before the 365-day cap; it changes no disposition.
|
|
270
|
+
*/
|
|
271
|
+
readonly credentialExpires?: string | null;
|
|
266
272
|
}
|
|
267
273
|
/** No response at all — DNS, refused, TLS, timeout. Not an HTTP status. */
|
|
268
274
|
| {
|
|
269
275
|
readonly kind: "unreachable";
|
|
270
276
|
};
|
|
277
|
+
/**
|
|
278
|
+
* `X-Credential-Expires`: an ISO 8601 instant, or null. Only a string that parses as a date is believed —
|
|
279
|
+
* the value is printed (as a date) to a person and compared against the clock, so a header that is not one
|
|
280
|
+
* must read as "the server did not say", never as a date in 1970.
|
|
281
|
+
*/
|
|
282
|
+
export declare function parseCredentialExpires(raw: string | null): string | null;
|
|
271
283
|
/**
|
|
272
284
|
* One attempt. No retry, no backoff, no classification — `CR-018` owns all three.
|
|
273
285
|
*
|
|
@@ -333,6 +345,8 @@ export type Delivery =
|
|
|
333
345
|
* print ONE stderr line for the whole run, rather than one per request.
|
|
334
346
|
*/
|
|
335
347
|
readonly inferredSetAsidePairs: number;
|
|
348
|
+
/** `X-Credential-Expires` from the 2xx that delivered this, or `null`/absent. See `SendOutcome`. */
|
|
349
|
+
readonly credentialExpires?: string | null;
|
|
336
350
|
};
|
|
337
351
|
export interface DeliveryContext {
|
|
338
352
|
readonly home: string;
|
package/dist/post.js
CHANGED
|
@@ -342,6 +342,19 @@ function parseCommitsRetry(raw) {
|
|
|
342
342
|
.map((s) => s.trim().toLowerCase())
|
|
343
343
|
.filter((s) => isFullSha(s));
|
|
344
344
|
}
|
|
345
|
+
/**
|
|
346
|
+
* `X-Credential-Expires`: an ISO 8601 instant, or null. Only a string that parses as a date is believed —
|
|
347
|
+
* the value is printed (as a date) to a person and compared against the clock, so a header that is not one
|
|
348
|
+
* must read as "the server did not say", never as a date in 1970.
|
|
349
|
+
*/
|
|
350
|
+
export function parseCredentialExpires(raw) {
|
|
351
|
+
if (raw === null)
|
|
352
|
+
return null;
|
|
353
|
+
const value = raw.trim();
|
|
354
|
+
if (!/^\d{4}-\d{2}-\d{2}T/.test(value))
|
|
355
|
+
return null;
|
|
356
|
+
return Number.isFinite(Date.parse(value)) ? value : null;
|
|
357
|
+
}
|
|
345
358
|
/** `X-Rewrites-Inferred-Stored` → a non-negative integer, or `null` for absent/malformed. NEVER THROWS. */
|
|
346
359
|
function parseInferredStored(raw) {
|
|
347
360
|
if (raw === null)
|
|
@@ -387,6 +400,7 @@ export async function send(url, headers, body, timeoutMs) {
|
|
|
387
400
|
commitsRetry: parseCommitsRetry(res.headers.get("x-commits-retry")),
|
|
388
401
|
finalAck: parseFinalAck(res.headers.get("x-session-final")),
|
|
389
402
|
inferredStored: parseInferredStored(res.headers.get("x-rewrites-inferred-stored")),
|
|
403
|
+
credentialExpires: parseCredentialExpires(res.headers.get("x-credential-expires")),
|
|
390
404
|
};
|
|
391
405
|
}
|
|
392
406
|
catch {
|
|
@@ -804,6 +818,7 @@ export async function deliver(ctx, eof, readBody) {
|
|
|
804
818
|
finalAck: outcome.kind === "response" ? outcome.finalAck : null,
|
|
805
819
|
inferredStored: outcome.kind === "response" ? outcome.inferredStored : null,
|
|
806
820
|
inferredSetAsidePairs,
|
|
821
|
+
credentialExpires: outcome.kind === "response" && disposition === "ok" ? (outcome.credentialExpires ?? null) : null,
|
|
807
822
|
};
|
|
808
823
|
}
|
|
809
824
|
//# sourceMappingURL=post.js.map
|