@miakapp/cli 4.0.0-alpha.0 → 4.0.0-alpha.10

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 (63) hide show
  1. package/README.md +151 -35
  2. package/assets/agent-guide.md +232 -79
  3. package/assets/design/OFL-Manrope.txt +93 -0
  4. package/assets/design/components.css +139 -0
  5. package/assets/design/fonts.css +9 -0
  6. package/assets/design/gallery.html +667 -0
  7. package/assets/design/guide.md +77 -0
  8. package/assets/design/tokens.css +185 -0
  9. package/assets/starter/app/app/README.md +74 -0
  10. package/assets/starter/app/app/main.ts +124 -0
  11. package/assets/starter/app/app/miakapp.ts +156 -0
  12. package/assets/starter/app/app/theme.ts +8 -0
  13. package/assets/starter/app/tsconfig.json +23 -0
  14. package/bin/miakapp.js +5 -1
  15. package/dist/agent-pack.d.ts +11 -3
  16. package/dist/agent-pack.d.ts.map +1 -1
  17. package/dist/agent-pack.js +26 -10
  18. package/dist/agent-pack.js.map +1 -1
  19. package/dist/contexts.d.ts +59 -0
  20. package/dist/contexts.d.ts.map +1 -0
  21. package/dist/contexts.js +388 -0
  22. package/dist/contexts.js.map +1 -0
  23. package/dist/control-plane.d.ts +14 -0
  24. package/dist/control-plane.d.ts.map +1 -1
  25. package/dist/control-plane.js +33 -1
  26. package/dist/control-plane.js.map +1 -1
  27. package/dist/internal/names.d.ts +5 -0
  28. package/dist/internal/names.d.ts.map +1 -1
  29. package/dist/internal/names.js +6 -0
  30. package/dist/internal/names.js.map +1 -1
  31. package/dist/main.d.ts +22 -5
  32. package/dist/main.d.ts.map +1 -1
  33. package/dist/main.js +673 -60
  34. package/dist/main.js.map +1 -1
  35. package/dist/mcp.d.ts +7 -1
  36. package/dist/mcp.d.ts.map +1 -1
  37. package/dist/mcp.js +195 -26
  38. package/dist/mcp.js.map +1 -1
  39. package/dist/pairing.d.ts +27 -0
  40. package/dist/pairing.d.ts.map +1 -0
  41. package/dist/pairing.js +148 -0
  42. package/dist/pairing.js.map +1 -0
  43. package/dist/project.d.ts +3 -1
  44. package/dist/project.d.ts.map +1 -1
  45. package/dist/project.js +33 -6
  46. package/dist/project.js.map +1 -1
  47. package/dist/publication.d.ts +20 -5
  48. package/dist/publication.d.ts.map +1 -1
  49. package/dist/publication.js +58 -16
  50. package/dist/publication.js.map +1 -1
  51. package/dist/starter.d.ts +17 -0
  52. package/dist/starter.d.ts.map +1 -0
  53. package/dist/starter.js +72 -0
  54. package/dist/starter.js.map +1 -0
  55. package/dist/terminal.d.ts +10 -0
  56. package/dist/terminal.d.ts.map +1 -0
  57. package/dist/terminal.js +70 -0
  58. package/dist/terminal.js.map +1 -0
  59. package/dist/version.d.ts +15 -0
  60. package/dist/version.d.ts.map +1 -0
  61. package/dist/version.js +15 -0
  62. package/dist/version.js.map +1 -0
  63. package/package.json +6 -4
@@ -0,0 +1,27 @@
1
+ import { type FetchLike } from './internal/http.js';
2
+ export declare const PAIRING_PATH = "/v1/pairing/redeem";
3
+ export declare const DEFAULT_ISSUER = "https://control.miakapp.com";
4
+ export declare const PAIRING_PAGE = "https://miakapp.com/pair";
5
+ export interface PairingResult {
6
+ readonly homeKey: string;
7
+ readonly homeId: string;
8
+ readonly keyId: string;
9
+ readonly issuer: string;
10
+ }
11
+ /** Validates the issuer a code may be sent to, before the code is read. */
12
+ export declare function pairingIssuer(value: string): string;
13
+ /** Trims the surrounding whitespace a paste or a pipe adds, and nothing else. */
14
+ export declare function normalizeCode(value: string): string;
15
+ export declare function validateLabel(value: string): string;
16
+ /**
17
+ * Sends the code once. Never retried: a lost response may hide a key that was
18
+ * already issued, and the second attempt would only burn the attempt budget on
19
+ * a code that is now spent.
20
+ */
21
+ export declare function redeemPairingCode(options: {
22
+ readonly issuer: string;
23
+ readonly code: string;
24
+ readonly label: string;
25
+ readonly fetch?: FetchLike;
26
+ }): Promise<PairingResult>;
27
+ //# sourceMappingURL=pairing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pairing.d.ts","sourceRoot":"","sources":["../src/pairing.ts"],"names":[],"mappings":"AAsBA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,oBAAoB,CAAC;AAI5B,eAAO,MAAM,YAAY,uBAAuB,CAAC;AACjD,eAAO,MAAM,cAAc,gCAAgC,CAAC;AAC5D,eAAO,MAAM,YAAY,6BAA6B,CAAC;AAOvD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,2EAA2E;AAC3E,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYnD;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAenD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOnD;AAiBD;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,CAAC;CAC5B,GAAG,OAAO,CAAC,aAAa,CAAC,CAiFzB"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Redeems a one-time pairing code for a new Home Key.
3
+ *
4
+ * The person picks the home and confirms access in their own browser, on the
5
+ * pairing page of their own account; the agent never signs in anywhere. What
6
+ * reaches the agent is a short-lived, single-use code, and this module trades
7
+ * it for a fresh, separately revocable key — one key per agent or machine,
8
+ * never a copy of someone else's.
9
+ *
10
+ * Contract (shared with the control plane, fixed):
11
+ *
12
+ * POST {issuer}/v1/pairing/redeem
13
+ * {"code": "...", "label": "..."}
14
+ * → 200 {"home_key", "home_id", "key_id", "issuer"}, Cache-Control: no-store
15
+ *
16
+ * The request goes only to the issuer chosen before the code was read, after
17
+ * that issuer's own discovery document confirmed it is a Miakapp control plane
18
+ * under exactly that name. Redirects are refused, so a code cannot be walked to
19
+ * another host, and the response must name the same issuer and a key whose ID
20
+ * is embedded in the key itself.
21
+ */
22
+ import { CliError, authorizationError, contractError, unknownOutcomeError, usageError } from './errors.js';
23
+ import { cancelBody, canonicalHttpsUrl, readBoundedBody, requestBody, } from './internal/http.js';
24
+ import { boundedString, exactRecord, parseJson } from './internal/json.js';
25
+ import { isHomeId } from './internal/names.js';
26
+ export const PAIRING_PATH = '/v1/pairing/redeem';
27
+ export const DEFAULT_ISSUER = 'https://control.miakapp.com';
28
+ export const PAIRING_PAGE = 'https://miakapp.com/pair';
29
+ const HOME_KEY = /^mhk1_([A-Za-z0-9_-]{22})_([A-Za-z0-9_-]{43})$/;
30
+ const CODE = /^[\x21-\x7e]{4,128}$/;
31
+ const CONTROL_CHARACTER = /\p{Cc}/u;
32
+ const MAXIMUM_REDEEM_RESPONSE_BYTES = 16_384;
33
+ /** Validates the issuer a code may be sent to, before the code is read. */
34
+ export function pairingIssuer(value) {
35
+ let issuer;
36
+ try {
37
+ issuer = canonicalHttpsUrl(value, 'issuer');
38
+ }
39
+ catch {
40
+ throw usageError(`--issuer must be an exact https URL without a path suffix, query or fragment, received ${JSON.stringify(value)}`, `Omit --issuer to use ${DEFAULT_ISSUER}.`);
41
+ }
42
+ if (issuer.endsWith('/'))
43
+ throw usageError('--issuer must not have a trailing slash');
44
+ return issuer;
45
+ }
46
+ /** Trims the surrounding whitespace a paste or a pipe adds, and nothing else. */
47
+ export function normalizeCode(value) {
48
+ const code = value.trim();
49
+ if (code === '') {
50
+ throw usageError('No pairing code was provided', `Ask the owner to open ${PAIRING_PAGE}, confirm access to the home and send you the code.`);
51
+ }
52
+ if (!CODE.test(code)) {
53
+ throw usageError('The pairing code must be 4..128 printable characters without spaces', 'Paste the code exactly as the pairing page shows it.');
54
+ }
55
+ return code;
56
+ }
57
+ export function validateLabel(value) {
58
+ if (value.length === 0
59
+ || new TextEncoder().encode(value).byteLength > 64
60
+ || CONTROL_CHARACTER.test(value)) {
61
+ throw usageError('--label must be 1..64 UTF-8 bytes without control characters');
62
+ }
63
+ return value;
64
+ }
65
+ function orphanRemedy(label) {
66
+ return `The code may have been consumed. Ask the owner for a new code at ${PAIRING_PAGE}, and to `
67
+ + `revoke any Home Key labelled ${JSON.stringify(label)} that they did not expect.`;
68
+ }
69
+ async function failureCode(response) {
70
+ try {
71
+ const body = parseJson(await readBoundedBody(response, MAXIMUM_REDEEM_RESPONSE_BYTES));
72
+ const error = body?.error;
73
+ return typeof error?.code === 'string' && /^[a-z_]{1,64}$/.test(error.code) ? error.code : undefined;
74
+ }
75
+ catch {
76
+ return undefined;
77
+ }
78
+ }
79
+ /**
80
+ * Sends the code once. Never retried: a lost response may hide a key that was
81
+ * already issued, and the second attempt would only burn the attempt budget on
82
+ * a code that is now spent.
83
+ */
84
+ export async function redeemPairingCode(options) {
85
+ const fetcher = options.fetch ?? globalThis.fetch;
86
+ let response;
87
+ try {
88
+ response = await fetcher(`${options.issuer}${PAIRING_PATH}`, {
89
+ method: 'POST',
90
+ headers: {
91
+ accept: 'application/json',
92
+ 'content-type': 'application/json; charset=utf-8',
93
+ },
94
+ body: requestBody({ code: options.code, label: options.label }),
95
+ credentials: 'omit',
96
+ redirect: 'error',
97
+ referrerPolicy: 'no-referrer',
98
+ });
99
+ }
100
+ catch {
101
+ throw unknownOutcomeError('The pairing request did not return a response', orphanRemedy(options.label));
102
+ }
103
+ if (response.status !== 200 && response.status !== 201) {
104
+ const code = await failureCode(response);
105
+ const suffix = code === undefined ? '' : ` ${code}`;
106
+ if (response.status === 429) {
107
+ const retry = response.headers.get('retry-after');
108
+ throw authorizationError(`The pairing service refused the attempt with HTTP 429${suffix}: too many attempts`, `${retry === null ? 'Wait' : `Wait ${retry} seconds`} before trying again, and check the code `
109
+ + 'with the owner instead of guessing.');
110
+ }
111
+ if (response.status >= 500) {
112
+ throw unknownOutcomeError(`The pairing service failed with HTTP ${response.status}${suffix}`, orphanRemedy(options.label));
113
+ }
114
+ throw authorizationError(`The pairing code was refused with HTTP ${response.status}${suffix}`, 'A code works once and for ten minutes. Ask the owner to create a new one at '
115
+ + `${PAIRING_PAGE} and send it to you.`);
116
+ }
117
+ const cacheControl = (response.headers.get('cache-control') ?? '')
118
+ .split(',')
119
+ .map((item) => item.trim().toLowerCase());
120
+ if (!cacheControl.includes('no-store')) {
121
+ cancelBody(response);
122
+ throw contractError('The pairing response is missing Cache-Control: no-store; the key it carries was discarded', `Report the control plane. Ask the owner to revoke the Home Key labelled ${JSON.stringify(options.label)}.`);
123
+ }
124
+ let result;
125
+ try {
126
+ // The contract fixes these four fields. A `schema` tag is tolerated because
127
+ // every other control-plane document carries one; any other member is a
128
+ // contract change and is refused. Nothing but the four is ever stored.
129
+ const document = exactRecord(parseJson(await readBoundedBody(response, MAXIMUM_REDEEM_RESPONSE_BYTES)), ['home_key', 'home_id', 'key_id', 'issuer'], ['schema']);
130
+ const homeKey = boundedString(document.home_key, 1, 256);
131
+ const keyId = boundedString(document.key_id, 22, 22);
132
+ const match = HOME_KEY.exec(homeKey);
133
+ if (match?.[1] !== keyId)
134
+ throw contractError('home_key does not carry key_id');
135
+ if (!isHomeId(document.home_id))
136
+ throw contractError('home_id is not a Miakapp home ID');
137
+ if (document.issuer !== options.issuer) {
138
+ throw contractError(`The response names issuer ${String(document.issuer)}, not ${options.issuer}`);
139
+ }
140
+ result = Object.freeze({ homeKey, homeId: document.home_id, keyId, issuer: options.issuer });
141
+ }
142
+ catch (error) {
143
+ const detail = error instanceof CliError ? `: ${error.message}` : '';
144
+ throw contractError(`The pairing response does not match the redeem contract${detail}; nothing was stored`, `Report the control plane. Ask the owner to revoke the Home Key labelled ${JSON.stringify(options.label)}.`);
145
+ }
146
+ return result;
147
+ }
148
+ //# sourceMappingURL=pairing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pairing.js","sourceRoot":"","sources":["../src/pairing.ts"],"names":[],"mappings":"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"}
package/dist/project.d.ts CHANGED
@@ -1,8 +1,10 @@
1
- import { type Requirements } from './internal/names.js';
1
+ import { type ReleaseAbi, type Requirements } from './internal/names.js';
2
2
  export declare const PROJECT_FILE = "miakapp.yaml";
3
3
  export declare const PROJECT_SCHEMA = "miakapp.project/1";
4
4
  export interface Project {
5
5
  readonly root: string;
6
+ /** `miakapp.app/1` for an `app:` section, `miakapp.component/1` for `component:`. */
7
+ readonly abi: ReleaseAbi;
6
8
  readonly homeId: string;
7
9
  readonly issuer: string;
8
10
  readonly artifactPath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAGA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAI7E,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,cAAc,sBAAsB,CAAC;AAElD,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/C;AAgBD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAYzF;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CA0ClE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GACzC,OAAO,CAAC,MAAM,CAAC,CAcjB"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,UAAU,EACf,KAAK,YAAY,EAClB,MAAM,qBAAqB,CAAC;AAI7B,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,cAAc,sBAAsB,CAAC;AAElD,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/C;AAgBD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAYzF;AAuBD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAsDlE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GACzC,OAAO,CAAC,MAAM,CAAC,CAcjB"}
package/dist/project.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { isAbsolute, join, normalize, resolve, sep } from 'node:path';
2
2
  import { projectError } from './errors.js';
3
3
  import { canonicalHttpsUrl } from './internal/http.js';
4
- import { isHomeId, isRelease } from './internal/names.js';
4
+ import { APP_ABI, COMPONENT_ABI, isHomeId, isRelease, } from './internal/names.js';
5
5
  import { canonicalRequirements } from './internal/requirements.js';
6
6
  import { parseYaml } from './internal/yaml.js';
7
7
  export const PROJECT_FILE = 'miakapp.yaml';
@@ -36,9 +36,26 @@ export function resolveProjectPath(root, declared, label) {
36
36
  }
37
37
  return join(root, normalized);
38
38
  }
39
+ /**
40
+ * The trusted shell brokers only state reads and calls to a whole-house
41
+ * application, and never a protocol-reserved `miakapp.*` function. Declaring
42
+ * anything else would publish a manifest the shell silently narrows, so it is
43
+ * refused here instead.
44
+ */
45
+ function assertAppCeiling(requires) {
46
+ for (const kind of ['event_subscribe', 'event_publish', 'presentation']) {
47
+ if (requires[kind].length > 0) {
48
+ throw projectError(`app.requires.${kind} must be empty: the house shell brokers only state_read and call`, 'Read state and call functions; render media and react to changes from state.');
49
+ }
50
+ }
51
+ const reserved = requires.call.find((name) => name === 'miakapp.*' || name.startsWith('miakapp.'));
52
+ if (reserved !== undefined) {
53
+ throw projectError(`app.requires.call names the protocol-reserved function ${reserved}`);
54
+ }
55
+ }
39
56
  export function parseProject(root, source) {
40
57
  const document = parseYaml(source);
41
- exactKeys(document, ['schema', 'home', 'control_plane', 'component', 'coordinator'], PROJECT_FILE);
58
+ exactKeys(document, ['schema', 'home', 'control_plane', 'app', 'component', 'coordinator'], PROJECT_FILE);
42
59
  if (document.schema !== PROJECT_SCHEMA) {
43
60
  throw projectError(`${PROJECT_FILE} must declare schema: ${PROJECT_SCHEMA}`, 'Run miakapp init to generate a current project file.');
44
61
  }
@@ -48,12 +65,21 @@ export function parseProject(root, source) {
48
65
  const issuer = canonicalHttpsUrl(document.control_plane, 'control_plane');
49
66
  if (issuer.endsWith('/'))
50
67
  throw projectError('control_plane must not have a trailing slash');
51
- const component = mapping(document.component, 'component');
52
- exactKeys(component, ['artifact', 'release', 'requires'], 'component');
68
+ const hasApp = document.app !== undefined && document.app !== null;
69
+ const hasComponent = document.component !== undefined && document.component !== null;
70
+ if (hasApp === hasComponent) {
71
+ throw projectError(`${PROJECT_FILE} must declare exactly one of app (a whole-house application) or component`, 'Use app: for a resident interface you draw yourself; component: for a semantic tree.');
72
+ }
73
+ const section = hasApp ? 'app' : 'component';
74
+ const abi = hasApp ? APP_ABI : COMPONENT_ABI;
75
+ const component = mapping(document[section], section);
76
+ exactKeys(component, ['artifact', 'release', 'requires'], section);
53
77
  if (!isRelease(component.release)) {
54
- throw projectError('component.release must be 1..64 UTF-8 bytes without control characters');
78
+ throw projectError(`${section}.release must be 1..64 UTF-8 bytes without control characters`);
55
79
  }
56
80
  const requires = canonicalRequirements(component.requires === undefined || component.requires === null ? {} : component.requires);
81
+ if (hasApp)
82
+ assertAppCeiling(requires);
57
83
  let coordinatorEntry;
58
84
  if (document.coordinator !== undefined && document.coordinator !== null) {
59
85
  const coordinator = mapping(document.coordinator, 'coordinator');
@@ -62,9 +88,10 @@ export function parseProject(root, source) {
62
88
  }
63
89
  return Object.freeze({
64
90
  root,
91
+ abi,
65
92
  homeId: document.home,
66
93
  issuer,
67
- artifactPath: resolveProjectPath(root, component.artifact, 'component.artifact'),
94
+ artifactPath: resolveProjectPath(root, component.artifact, `${section}.artifact`),
68
95
  release: component.release,
69
96
  requires,
70
97
  coordinatorEntry,
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../src/project.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { type FetchLike } from './internal/http.js';
2
- import { type Requirements } from './internal/names.js';
2
+ import { type ReleaseAbi, type Requirements } from './internal/names.js';
3
3
  import type { Artifact } from './artifact.js';
4
- export declare const COMPONENT_ABI = "miakapp.component/1";
4
+ export { APP_ABI, COMPONENT_ABI } from './internal/names.js';
5
5
  export type UploadStatus = 'awaiting_upload' | 'delivered' | 'finalized';
6
6
  export interface UploadCapability {
7
7
  readonly uploadId: string;
@@ -13,7 +13,7 @@ export interface UploadState {
13
13
  readonly uploadId: string;
14
14
  readonly status: UploadStatus;
15
15
  readonly release: string;
16
- readonly abi: string;
16
+ readonly abi: ReleaseAbi;
17
17
  readonly sha256: string;
18
18
  readonly size: number;
19
19
  readonly requires: Requirements;
@@ -21,7 +21,7 @@ export interface UploadState {
21
21
  }
22
22
  export interface ComponentRelease {
23
23
  readonly release: string;
24
- readonly abi: string;
24
+ readonly abi: ReleaseAbi;
25
25
  readonly sha256: string;
26
26
  readonly size: number;
27
27
  readonly requires: Requirements;
@@ -31,7 +31,7 @@ export interface ComponentPointer {
31
31
  readonly homeId: string;
32
32
  readonly generation: number;
33
33
  readonly release: string;
34
- readonly abi: string;
34
+ readonly abi: ReleaseAbi;
35
35
  readonly url: string;
36
36
  readonly sha256: string;
37
37
  readonly size: number;
@@ -48,6 +48,8 @@ export interface PublicationTarget {
48
48
  }
49
49
  export interface UploadRequest {
50
50
  readonly release: string;
51
+ /** Defaults to the semantic component ABI for compatibility. */
52
+ readonly abi?: ReleaseAbi;
51
53
  readonly requires: Requirements;
52
54
  }
53
55
  /** Step 1: request one capability bound to the complete publication tuple. */
@@ -66,6 +68,19 @@ export declare function finalizeUpload(target: PublicationTarget, uploadId: stri
66
68
  export declare function readUpload(target: PublicationTarget, uploadId: string): Promise<UploadState>;
67
69
  /** Reconciliation read for a lost finalization response. */
68
70
  export declare function readRelease(target: PublicationTarget, sha256: string): Promise<ComponentRelease | undefined>;
71
+ /**
72
+ * Reads what is live: the generation the pointer holds and the release it
73
+ * points at, or generation 0 and no pointer for a home that never activated.
74
+ *
75
+ * RFC 0004 §13.2 serves this under the same publisher authorization as the
76
+ * other reads. It takes no lock, so the activation that follows remains a
77
+ * compare-and-set and a concurrent publisher still fails with
78
+ * `generation_conflict` instead of being overwritten.
79
+ */
80
+ export declare function readPointer(target: PublicationTarget): Promise<{
81
+ readonly generation: number;
82
+ readonly pointer: ComponentPointer | null;
83
+ }>;
69
84
  /**
70
85
  * Step 4: compare-and-set the home pointer to a strictly greater generation.
71
86
  *
@@ -1 +1 @@
1
- {"version":3,"file":"publication.d.ts","sourceRoot":"","sources":["../src/publication.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publication.d.ts","sourceRoot":"","sources":["../src/publication.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  import { artifactError, authorizationError, conflictError, contractError, unknownOutcomeError, } from './errors.js';
2
2
  import { MAXIMUM_RESPONSE_BYTES, cancelBody, jsonRequestInit, readBoundedBody, readJsonBody, requestBody, } from './internal/http.js';
3
3
  import { boundedString, exactRecord, instant, parseJson, positiveInteger, } from './internal/json.js';
4
- import { MAXIMUM_ARTIFACT_BYTES, isDigest, isGeneration, isHomeId, isRandomId, isRelease, isUploadToken, REQUIREMENT_KINDS, } from './internal/names.js';
4
+ import { MAXIMUM_ARTIFACT_BYTES, isDigest, isGeneration, isHomeId, isRandomId, isRelease, isReleaseAbi, isUploadToken, REQUIREMENT_KINDS, } from './internal/names.js';
5
5
  import { canonicalRequirements, sameRequirements } from './internal/requirements.js';
6
- export const COMPONENT_ABI = 'miakapp.component/1';
6
+ import { COMPONENT_ABI } from './internal/names.js';
7
+ export { APP_ABI, COMPONENT_ABI } from './internal/names.js';
7
8
  /** RFC 0004 §13.2 expires an upload capability within fifteen minutes. */
8
9
  const MAXIMUM_CAPABILITY_LIFETIME_MS = 900_000;
9
10
  function client(target) {
@@ -156,13 +157,13 @@ function decodeUploadState(value) {
156
157
  throw contractError('release is invalid');
157
158
  if (!isDigest(document.sha256))
158
159
  throw contractError('sha256 is not a base64url SHA-256 digest');
159
- if (document.abi !== COMPONENT_ABI)
160
- throw contractError('abi is not the supported ABI');
160
+ if (!isReleaseAbi(document.abi))
161
+ throw contractError('abi is not a supported ABI');
161
162
  return Object.freeze({
162
163
  uploadId: document.upload_id,
163
164
  status,
164
165
  release: document.release,
165
- abi: COMPONENT_ABI,
166
+ abi: document.abi,
166
167
  sha256: document.sha256,
167
168
  size: positiveInteger(document.size, MAXIMUM_ARTIFACT_BYTES),
168
169
  requires: decodeRequirements(document.requires),
@@ -186,11 +187,11 @@ function decodeRelease(value) {
186
187
  throw contractError('release is invalid');
187
188
  if (!isDigest(document.sha256))
188
189
  throw contractError('sha256 is not a base64url SHA-256 digest');
189
- if (document.abi !== COMPONENT_ABI)
190
- throw contractError('abi is not the supported ABI');
190
+ if (!isReleaseAbi(document.abi))
191
+ throw contractError('abi is not a supported ABI');
191
192
  return Object.freeze({
192
193
  release: document.release,
193
- abi: COMPONENT_ABI,
194
+ abi: document.abi,
194
195
  sha256: document.sha256,
195
196
  size: positiveInteger(document.size, MAXIMUM_ARTIFACT_BYTES),
196
197
  requires: decodeRequirements(document.requires),
@@ -222,8 +223,8 @@ function decodePointer(value, target) {
222
223
  throw contractError('Pointer release is invalid');
223
224
  if (!isDigest(document.sha256))
224
225
  throw contractError('Pointer sha256 is invalid');
225
- if (document.abi !== COMPONENT_ABI)
226
- throw contractError('Pointer abi is not the supported ABI');
226
+ if (!isReleaseAbi(document.abi))
227
+ throw contractError('Pointer abi is not a supported ABI');
227
228
  const url = boundedString(document.url, 1, 2_048);
228
229
  if (url !== `${target.issuer}/v1/components/${document.sha256}.js`) {
229
230
  throw contractError('Pointer url is not the token-free control-plane artifact resource');
@@ -232,7 +233,7 @@ function decodePointer(value, target) {
232
233
  homeId: target.homeId,
233
234
  generation: document.generation,
234
235
  release: document.release,
235
- abi: COMPONENT_ABI,
236
+ abi: document.abi,
236
237
  url,
237
238
  sha256: document.sha256,
238
239
  size: positiveInteger(document.size, MAXIMUM_ARTIFACT_BYTES),
@@ -247,7 +248,7 @@ export async function requestUpload(target, artifact, request) {
247
248
  }
248
249
  const body = requestBody({
249
250
  release: request.release,
250
- abi: COMPONENT_ABI,
251
+ abi: request.abi ?? COMPONENT_ABI,
251
252
  sha256: artifact.sha256,
252
253
  size: artifact.size,
253
254
  requires: request.requires,
@@ -256,7 +257,10 @@ export async function requestUpload(target, artifact, request) {
256
257
  if (response.status !== 201) {
257
258
  throw failure('Upload capability request', response.status, await readFailure(response), false);
258
259
  }
259
- return decodeUploadCapability(await readJsonBody(response), `${base}/component-uploads/`);
260
+ // RFC 0004 §13.2: the capability is delivered to the issuer-level
261
+ // `PUT /v1/component-uploads/{uploadId}`, not under the home path that
262
+ // issued it.
263
+ return decodeUploadCapability(await readJsonBody(response), `${target.issuer}/v1/component-uploads/`);
260
264
  }
261
265
  /**
262
266
  * Step 2: deliver the exact bytes once.
@@ -330,6 +334,40 @@ export async function readRelease(target, sha256) {
330
334
  }
331
335
  return decodeRelease(await readJsonBody(response));
332
336
  }
337
+ /**
338
+ * Reads what is live: the generation the pointer holds and the release it
339
+ * points at, or generation 0 and no pointer for a home that never activated.
340
+ *
341
+ * RFC 0004 §13.2 serves this under the same publisher authorization as the
342
+ * other reads. It takes no lock, so the activation that follows remains a
343
+ * compare-and-set and a concurrent publisher still fails with
344
+ * `generation_conflict` instead of being overwritten.
345
+ */
346
+ export async function readPointer(target) {
347
+ const { fetcher, signal, base } = client(target);
348
+ const response = await fetcher(`${base}/component-pointer`, jsonRequestInit('GET', target.token, undefined, signal));
349
+ if (response.status !== 200) {
350
+ throw failure('Pointer read', response.status, await readFailure(response), false);
351
+ }
352
+ const document = exactRecord(await readJsonBody(response), ['schema', 'generation', 'pointer']);
353
+ if (document.schema !== 'miakapp.component-pointer-state/1') {
354
+ throw contractError('Pointer state has an unsupported schema');
355
+ }
356
+ const generation = document.generation;
357
+ if (typeof generation !== 'number' || !Number.isSafeInteger(generation) || generation < 0) {
358
+ throw contractError('Pointer state generation is not a non-negative safe integer');
359
+ }
360
+ if (document.pointer === null) {
361
+ if (generation !== 0)
362
+ throw contractError('Pointer state has a generation but no pointer');
363
+ return Object.freeze({ generation, pointer: null });
364
+ }
365
+ const pointer = decodePointer(document.pointer, target);
366
+ if (pointer.generation !== generation) {
367
+ throw contractError('Pointer state generation does not match its pointer');
368
+ }
369
+ return Object.freeze({ generation, pointer });
370
+ }
333
371
  /**
334
372
  * Step 4: compare-and-set the home pointer to a strictly greater generation.
335
373
  *
@@ -369,12 +407,14 @@ export async function activateRelease(target, activation) {
369
407
  */
370
408
  export async function publish(target, artifact, request) {
371
409
  const requires = canonicalRequirements(request.requires);
372
- const capability = await requestUpload(target, artifact, { release: request.release, requires });
410
+ const abi = request.abi ?? COMPONENT_ABI;
411
+ const capability = await requestUpload(target, artifact, { release: request.release, abi, requires });
373
412
  await deliverArtifact(target, capability, artifact);
374
413
  const state = await readUpload(target, capability.uploadId);
375
414
  if (state.sha256 !== artifact.sha256
376
415
  || state.size !== artifact.size
377
416
  || state.release !== request.release
417
+ || state.abi !== abi
378
418
  || !sameRequirements(state.requires, requires)) {
379
419
  throw contractError('Upload state does not match the tuple the capability was bound to');
380
420
  }
@@ -384,7 +424,7 @@ export async function publish(target, artifact, request) {
384
424
  const release = state.status === 'finalized'
385
425
  ? await requireRelease(target, artifact.sha256)
386
426
  : await finalizeUpload(target, capability.uploadId);
387
- if (release.sha256 !== artifact.sha256 || release.size !== artifact.size) {
427
+ if (release.sha256 !== artifact.sha256 || release.size !== artifact.size || release.abi !== abi) {
388
428
  throw contractError('Finalized release does not match the delivered artifact');
389
429
  }
390
430
  const pointer = await activateRelease(target, {
@@ -392,7 +432,9 @@ export async function publish(target, artifact, request) {
392
432
  expectedGeneration: request.expectedGeneration,
393
433
  generation: request.generation,
394
434
  });
395
- if (pointer.sha256 !== artifact.sha256 || !sameRequirements(pointer.requires, requires)) {
435
+ if (pointer.sha256 !== artifact.sha256
436
+ || pointer.abi !== abi
437
+ || !sameRequirements(pointer.requires, requires)) {
396
438
  throw contractError('Activated pointer does not match the published release');
397
439
  }
398
440
  return { release, pointer };
@@ -1 +1 @@
1
- {"version":3,"file":"publication.js","sourceRoot":"","sources":["../src/publication.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publication.js","sourceRoot":"","sources":["../src/publication.ts"],"names":[],"mappings":"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"}