sealmetrics 0.1.2 → 0.1.4
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/PROTOCOL.md +63 -32
- package/dist/agent/ndjson.d.ts +3 -2
- package/dist/agent/ndjson.d.ts.map +1 -1
- package/dist/agent/ndjson.js.map +1 -1
- package/dist/api/client.d.ts +0 -3
- package/dist/api/client.d.ts.map +1 -1
- package/dist/api/client.js +51 -109
- package/dist/api/client.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +5 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +42 -20
- package/dist/commands/init.js.map +1 -1
- package/dist/detect/cms.d.ts +6 -4
- package/dist/detect/cms.d.ts.map +1 -1
- package/dist/detect/cms.js +4 -49
- package/dist/detect/cms.js.map +1 -1
- package/dist/detect/index.d.ts +7 -4
- package/dist/detect/index.d.ts.map +1 -1
- package/dist/detect/index.js +5 -152
- package/dist/detect/index.js.map +1 -1
- package/dist/handoff/install.d.ts.map +1 -1
- package/dist/handoff/install.js +9 -2
- package/dist/handoff/install.js.map +1 -1
- package/dist/index.js +2061 -66
- package/dist/instrument/guide.d.ts +1 -2
- package/dist/instrument/guide.d.ts.map +1 -1
- package/dist/instrument/guide.js +9 -24
- package/dist/instrument/guide.js.map +1 -1
- package/dist/mcp/configure.js +2 -2
- package/dist/mcp/configure.js.map +1 -1
- package/dist/types.d.ts +11 -40
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +0 -1
- package/dist/types.js.map +1 -1
- package/dist/verify/pixel.d.ts +5 -12
- package/dist/verify/pixel.d.ts.map +1 -1
- package/dist/verify/pixel.js +17 -33
- package/dist/verify/pixel.js.map +1 -1
- package/package.json +6 -3
package/PROTOCOL.md
CHANGED
|
@@ -6,10 +6,11 @@ An orchestrating agent parses the stream line by line and renders progress,
|
|
|
6
6
|
diffs and the claim URL to its user.
|
|
7
7
|
|
|
8
8
|
> **Report only what actually happened.** Treat the **exit code** as the source of
|
|
9
|
-
> truth: success is a terminal `result` event
|
|
10
|
-
>
|
|
11
|
-
>
|
|
12
|
-
>
|
|
9
|
+
> truth: a provisioning success is a terminal `result` event carrying an `account_id`
|
|
10
|
+
> with exit `0`. Exit `6` means "needs your approval" (act on the `confirm` event, see
|
|
11
|
+
> below) — not done, not failed. On any other non-zero exit or an `error` event, STOP
|
|
12
|
+
> and report the failure — never fabricate a success summary (account id, files,
|
|
13
|
+
> snippet) from what the CLI *would* have done. See "Error-handling contract" below.
|
|
13
14
|
|
|
14
15
|
## Envelope
|
|
15
16
|
|
|
@@ -31,6 +32,7 @@ Milestones. `data.stage` is the milestone id; extra fields vary.
|
|
|
31
32
|
|
|
32
33
|
```
|
|
33
34
|
start · detected:<framework|platform> · provisioned · reused
|
|
35
|
+
provision:email-exists
|
|
34
36
|
handoff:inject · handoff:plugin · handoff:already-installed · handoff:manual
|
|
35
37
|
verified:local · verify:local-pending
|
|
36
38
|
mcp:configured · mcp:handoff
|
|
@@ -38,10 +40,17 @@ instrumentation_guide · verified:pixel · verify:pending
|
|
|
38
40
|
```
|
|
39
41
|
|
|
40
42
|
Notable payloads:
|
|
43
|
+
- `start` → `{ version, protocol_doc, agent_contract }` — `agent_contract` summarises the
|
|
44
|
+
rules below in-band (the orchestrator sees it first, even if it never reads this file).
|
|
41
45
|
- `detected:*` → `{ framework, platform, strategy, recommended_location, provision_only }`
|
|
42
46
|
- `provisioned` → `{ account_id, dashboard_url, claim_url, free_quota_events }` (**never** the api_key)
|
|
43
47
|
- `handoff:inject` → `{ snippet, recommended_location, placement_hint, install_md }` — the **agent** places the snippet
|
|
44
48
|
- `instrumentation_guide` → `{ guide_path }`
|
|
49
|
+
- `provision:email-exists` (`level: warn`) → the email already has an account. No account
|
|
50
|
+
is created; a `result` with `{ provisioned: false, reason: "account_unavailable" }` follows
|
|
51
|
+
and the CLI exits `0` (anti-enumeration — it never confirms whether the email exists).
|
|
52
|
+
- `verify:pending` → `{ reason: "snippet_not_placed" }` when there was nothing to verify yet
|
|
53
|
+
(provisioning still succeeded); no `reason` when the snippet was placed but the pixel timed out.
|
|
45
54
|
|
|
46
55
|
### `file_change`
|
|
47
56
|
One per file the CLI plans/writes. The CLI only ever writes **its own**
|
|
@@ -55,29 +64,32 @@ artefacts (`.env`, `seal.config.json`, `.sealmetrics/*`, MCP config, `.gitignore
|
|
|
55
64
|
`action` is `plan` (with `diff`) before the write and `applied` after.
|
|
56
65
|
|
|
57
66
|
### `needs_input`
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
67
|
+
A value the CLI needs but the flags didn't supply. The stream never blocks on
|
|
68
|
+
stdin — the CLI emits this and keeps going / exits, it never waits for an answer.
|
|
69
|
+
|
|
70
|
+
In v1 every `needs_input` is **human-required**: it carries `"requires_human": true`
|
|
71
|
+
and **no `resolved`**. The orchestrator **MUST ask the human** and **MUST NOT**
|
|
72
|
+
auto-resolve, guess, or accept on their behalf — this overrides the `--agent`
|
|
73
|
+
auto-approve. After collecting the answers, re-invoke the CLI with the matching
|
|
74
|
+
flags. Fields:
|
|
75
|
+
- no `default` is sent (on purpose: a suggested value tempts the orchestrator to
|
|
76
|
+
auto-fill instead of asking — so there's nothing to reuse; ask).
|
|
77
|
+
- `options` → a closed set of valid answers (e.g. `["yes","no"]` for the ToS).
|
|
78
|
+
- `resolved` / `optional` → **reserved** fields. v1 emits neither (every input is
|
|
79
|
+
required and human-asked); if `resolved` is ever present, the value was chosen
|
|
80
|
+
automatically and needs no question.
|
|
81
|
+
|
|
82
|
+
The provisioning inputs are `email`, `site_name`, `accept_tos` and `domain` — **all
|
|
83
|
+
required**. `domain` in particular is required because the pixel rejects hits from
|
|
84
|
+
unregistered domains, so a domain-less account records **no data** at all. On a real
|
|
85
|
+
run a missing required input also yields an `error` (`code: invalid_args`) + exit `2`;
|
|
86
|
+
`--dry-run` just lists them up front (exit `0`, nothing provisioned) so the
|
|
87
|
+
orchestrator can ask for everything in one round.
|
|
71
88
|
|
|
72
89
|
> Never auto-accept the Terms of Service (`id: "accept_tos"`) or invent an email /
|
|
73
|
-
> site name
|
|
90
|
+
> site name. Provisioning creates a real account.
|
|
74
91
|
|
|
75
92
|
```json
|
|
76
|
-
// auto-resolved
|
|
77
|
-
{ "v":1, "type":"needs_input", "level":"info",
|
|
78
|
-
"data": { "id":"…", "prompt":"…", "default":"…", "resolved":"…" } }
|
|
79
|
-
|
|
80
|
-
// human-required (ask the user; do not guess)
|
|
81
93
|
{ "v":1, "type":"needs_input", "level":"info",
|
|
82
94
|
"data": { "id":"accept_tos", "prompt":"Accept the Terms of Service (…)?",
|
|
83
95
|
"options":["yes","no"], "requires_human": true } }
|
|
@@ -94,7 +106,7 @@ written no files. The orchestrator **MUST** show these values to the human and,
|
|
|
94
106
|
```json
|
|
95
107
|
{ "v":1, "type":"confirm", "level":"info",
|
|
96
108
|
"data": { "action":"create_free_account", "email":"…", "site_name":"…",
|
|
97
|
-
"domain":"
|
|
109
|
+
"domain":"…", "accept_tos":true, "base_url":"…",
|
|
98
110
|
"message":"Nothing has been created yet. …",
|
|
99
111
|
"reinvoke_with":"sealmetrics init --agent … --confirm" } }
|
|
100
112
|
```
|
|
@@ -103,21 +115,34 @@ written no files. The orchestrator **MUST** show these values to the human and,
|
|
|
103
115
|
skips the gate. Interactive mode shows a summary + a `[Y/n]` prompt instead.
|
|
104
116
|
|
|
105
117
|
### `result`
|
|
106
|
-
The final structured payload.
|
|
118
|
+
The final structured payload. A **provisioning success** carries an `account_id`.
|
|
107
119
|
|
|
108
120
|
```json
|
|
109
121
|
{ "v":1, "type":"result", "level":"info",
|
|
110
|
-
"data": { "account_id":"…", "dashboard_url":"…", "claim_url":"
|
|
111
|
-
"framework":"next-app", "
|
|
122
|
+
"data": { "account_id":"…", "dashboard_url":"…", "claim_url":"…|null",
|
|
123
|
+
"framework":"next-app", "platform": null,
|
|
124
|
+
"mcp_configured": true, "verified": true,
|
|
112
125
|
"next_steps": ["…"] } }
|
|
113
126
|
```
|
|
114
127
|
|
|
128
|
+
- `verified` is `true` (pixel confirmed) · `false` (snippet placed, timed out → exit 5)
|
|
129
|
+
· `null` (nothing to verify yet, or verify skipped → exit 0).
|
|
130
|
+
- The **email-exists** variant carries `{ "provisioned": false, "reason": "account_unavailable", "next_steps": […] }`
|
|
131
|
+
and **no `account_id`** (exit 0). Treat the absence of `account_id` as "no account created".
|
|
132
|
+
- `--dry-run` adds `{ "dry_run": true, "would_provision": bool, "recommended_location",
|
|
133
|
+
"placement_hint", "terms_url" }` and uses a placeholder `account_id` — it never provisions.
|
|
134
|
+
|
|
115
135
|
### `error`
|
|
116
136
|
```json
|
|
117
137
|
{ "v":1, "type":"error", "level":"error",
|
|
118
138
|
"data": { "code":"AUTH_REQUIRED", "message":"…", "hint":"…", "command":"npx sealmetrics init --provision-key <KEY> …" } }
|
|
119
139
|
```
|
|
120
140
|
|
|
141
|
+
`data.code` (string) is one of: `invalid_args` (exit 2) · `AUTH_REQUIRED` (exit 3, carries
|
|
142
|
+
`command`) · `network_error` / `bad_response` / `rate_limited` (carries `retry_after`) /
|
|
143
|
+
`provisioning_disabled` / `backend_error` / `pixel_status_error` (all exit 4) · `cancelled`
|
|
144
|
+
(exit 130) · `unexpected` (exit 4). `hint` is an optional human-readable next step.
|
|
145
|
+
|
|
121
146
|
## Exit codes
|
|
122
147
|
|
|
123
148
|
| Code | Meaning |
|
|
@@ -144,8 +169,14 @@ On either signal, the orchestrator **MUST STOP and report the failure to the use
|
|
|
144
169
|
- describe files as written, or
|
|
145
170
|
- show an `account_id` / snippet / claim URL,
|
|
146
171
|
|
|
147
|
-
unless it actually saw a **`result` event AND exit code `0`**.
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
172
|
+
unless it actually saw a **`result` event carrying an `account_id` AND exit code `0`**.
|
|
173
|
+
That is the only definition of provisioning success — a `result` with
|
|
174
|
+
`provisioned: false` (email-exists) or no `account_id` is **not** an account. On
|
|
175
|
+
failure no account is created and **no files are written** (the CLI writes its
|
|
176
|
+
artefacts only after a successful provision). Never fabricate a success summary from
|
|
177
|
+
expected behaviour — report exactly what the stream and exit code say.
|
|
178
|
+
|
|
179
|
+
> Exit `6` (confirm-required) is the **one** non-zero exit that is not a failure:
|
|
180
|
+
> the CLI previewed the payload and is waiting for approval. Show the `confirm`
|
|
181
|
+
> event's values and, on an explicit yes, re-run with `--confirm` — do not report it
|
|
182
|
+
> as an error, and do not auto-approve.
|
package/dist/agent/ndjson.d.ts
CHANGED
|
@@ -33,7 +33,8 @@ export interface NeedsInput {
|
|
|
33
33
|
* guess, or accept on their behalf (e.g. Terms of Service, identity fields).
|
|
34
34
|
* Such inputs never carry `resolved`. */
|
|
35
35
|
requires_human?: boolean;
|
|
36
|
-
/**
|
|
36
|
+
/** Reserved: when true, the human may leave this blank. v1 emits no optional
|
|
37
|
+
* inputs (every provisioning field is required). Informational. */
|
|
37
38
|
optional?: boolean;
|
|
38
39
|
}
|
|
39
40
|
export interface ErrorData {
|
|
@@ -52,7 +53,7 @@ export interface ConfirmData {
|
|
|
52
53
|
action: string;
|
|
53
54
|
email: string;
|
|
54
55
|
site_name: string;
|
|
55
|
-
domain: string
|
|
56
|
+
domain: string;
|
|
56
57
|
accept_tos: boolean;
|
|
57
58
|
base_url: string;
|
|
58
59
|
message: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ndjson.d.ts","sourceRoot":"","sources":["../../src/agent/ndjson.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,eAAO,MAAM,gBAAgB,IAAI,CAAC;AAElC,MAAM,MAAM,SAAS,GACjB,WAAW,GACX,aAAa,GACb,aAAa,GACb,SAAS,GACT,QAAQ,GACR,OAAO,CAAC;AAEZ,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE9C,MAAM,WAAW,QAAQ;IACvB,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;oFACgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;8CAE0C;IAC1C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB
|
|
1
|
+
{"version":3,"file":"ndjson.d.ts","sourceRoot":"","sources":["../../src/agent/ndjson.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/ndjson.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ndjson.js","sourceRoot":"","sources":["../../src/agent/ndjson.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ndjson.js","sourceRoot":"","sources":["../../src/agent/ndjson.ts"],"names":[],"mappings":"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"}
|
package/dist/api/client.d.ts
CHANGED
|
@@ -21,8 +21,5 @@ export declare class ApiClient {
|
|
|
21
21
|
provision(input: ProvisionInput): Promise<ProvisionResult>;
|
|
22
22
|
/** GET /sites/{id}/pixel/status. Throws CliError(4) on network/backend errors. */
|
|
23
23
|
pixelStatus(accountId: string, apiKey: string): Promise<PixelStatus>;
|
|
24
|
-
private fetchWithTimeout;
|
|
25
|
-
private json;
|
|
26
|
-
private safeText;
|
|
27
24
|
}
|
|
28
25
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/api/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEhE,8FAA8F;AAC9F,qBAAa,gBAAiB,SAAQ,KAAK;;CAK1C;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2EAA2E;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAKjD,yFAAyF;IACnF,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAqBhE,kFAAkF;IAC5E,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;CAS3E"}
|
package/dist/api/client.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* HTTP client for the Fase 1 backend (Bloque 4).
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
2
|
+
* HTTP client for the Fase 1 backend (Bloque 4). The transport now lives in
|
|
3
|
+
* `@sealmetrics/setup-core` (`provision`, `fetchPixelStatus`), shared with the MCP
|
|
4
|
+
* write-path (RF-3102). This adapter keeps the CLI's surface identical: it maps
|
|
5
|
+
* setup-core's presentation-agnostic `ProvisionError` codes to the CLI's exit
|
|
6
|
+
* codes / `CliError` (RF-402) and re-exposes `EmailExistsError` + `ProvisionInput`.
|
|
6
7
|
*/
|
|
8
|
+
import { provision as coreProvision, fetchPixelStatus as coreFetchPixelStatus, ProvisionError, } from "@sealmetrics/setup-core";
|
|
7
9
|
import { CliError, ExitCode } from "../exit-codes.js";
|
|
8
|
-
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
9
10
|
/** Raised on 409 (email already exists) — init handles it as informative, exit 0 (RF-402). */
|
|
10
11
|
export class EmailExistsError extends Error {
|
|
11
12
|
constructor() {
|
|
@@ -22,126 +23,67 @@ export class ApiClient {
|
|
|
22
23
|
}
|
|
23
24
|
/** POST /provision. Throws CliError (3/4) or EmailExistsError on the mapped statuses. */
|
|
24
25
|
async provision(input) {
|
|
25
|
-
const body = {
|
|
26
|
-
site_name: input.siteName,
|
|
27
|
-
domain: input.domain,
|
|
28
|
-
email: input.email,
|
|
29
|
-
name: input.name,
|
|
30
|
-
accept_terms: true,
|
|
31
|
-
install_source: input.installSource,
|
|
32
|
-
timezone: input.timezone,
|
|
33
|
-
};
|
|
34
|
-
let res;
|
|
35
26
|
try {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
});
|
|
27
|
+
return await coreProvision({
|
|
28
|
+
siteName: input.siteName,
|
|
29
|
+
domain: input.domain,
|
|
30
|
+
email: input.email,
|
|
31
|
+
name: input.name,
|
|
32
|
+
installSource: input.installSource,
|
|
33
|
+
timezone: input.timezone,
|
|
34
|
+
}, { baseUrl: this.baseUrl, provisionKey: this.provisionKey });
|
|
45
35
|
}
|
|
46
36
|
catch (e) {
|
|
47
|
-
|
|
37
|
+
if (e instanceof ProvisionError) {
|
|
38
|
+
throw mapProvisionError(e, input, this.baseUrl);
|
|
39
|
+
}
|
|
40
|
+
throw e;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/** GET /sites/{id}/pixel/status. Throws CliError(4) on network/backend errors. */
|
|
44
|
+
async pixelStatus(accountId, apiKey) {
|
|
45
|
+
try {
|
|
46
|
+
return await coreFetchPixelStatus(accountId, { baseUrl: this.baseUrl, apiKey });
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
throw new CliError(ExitCode.NETWORK, "pixel_status_error", "Pixel status check failed.", {
|
|
48
50
|
hint: e instanceof Error ? e.message : undefined,
|
|
49
51
|
});
|
|
50
52
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
return
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
throw new CliError(ExitCode.AUTH_REQUIRED, "AUTH_REQUIRED", "The provision key was rejected (invalid or revoked).", {
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/** Map setup-core's transport-level error to the CLI's exit-coded CliError (RF-402). */
|
|
56
|
+
function mapProvisionError(e, input, baseUrl) {
|
|
57
|
+
switch (e.code) {
|
|
58
|
+
case "EMAIL_EXISTS":
|
|
59
|
+
return new EmailExistsError();
|
|
60
|
+
case "AUTH_REQUIRED":
|
|
61
|
+
return new CliError(ExitCode.AUTH_REQUIRED, "AUTH_REQUIRED", e.message, {
|
|
61
62
|
hint: "Re-run with a valid publishable provision key.",
|
|
62
63
|
extra: {
|
|
63
64
|
command: input.reinvokeCommand ??
|
|
64
65
|
"npx sealmetrics init --provision-key <YOUR_KEY> --email <email> --accept-tos",
|
|
65
66
|
},
|
|
66
67
|
});
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
if (res.status === 429) {
|
|
72
|
-
const retryAfter = parseRetryAfter(res.headers.get("Retry-After"));
|
|
73
|
-
throw new CliError(ExitCode.NETWORK, "rate_limited", "Provisioning is rate-limited. Please wait and retry.", {
|
|
74
|
-
extra: retryAfter ? { retry_after: retryAfter } : undefined,
|
|
68
|
+
case "RATE_LIMITED":
|
|
69
|
+
return new CliError(ExitCode.NETWORK, "rate_limited", e.message, {
|
|
70
|
+
extra: e.retryAfter ? { retry_after: e.retryAfter } : undefined,
|
|
75
71
|
});
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
80
|
-
const detail = await this.safeText(res);
|
|
81
|
-
throw new CliError(ExitCode.NETWORK, "backend_error", `Provisioning failed (HTTP ${res.status}).`, {
|
|
82
|
-
hint: detail.slice(0, 200) || undefined,
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
/** GET /sites/{id}/pixel/status. Throws CliError(4) on network/backend errors. */
|
|
86
|
-
async pixelStatus(accountId, apiKey) {
|
|
87
|
-
const url = `${this.baseUrl}/sites/${encodeURIComponent(accountId)}/pixel/status`;
|
|
88
|
-
let res;
|
|
89
|
-
try {
|
|
90
|
-
res = await this.fetchWithTimeout(url, {
|
|
91
|
-
method: "GET",
|
|
92
|
-
headers: { "X-API-Key": apiKey, Accept: "application/json" },
|
|
72
|
+
case "PROVISIONING_DISABLED":
|
|
73
|
+
return new CliError(ExitCode.NETWORK, "provisioning_disabled", e.message, {
|
|
74
|
+
hint: "The free-tier channel is not enabled yet. Try again later.",
|
|
93
75
|
});
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
76
|
+
case "BAD_RESPONSE":
|
|
77
|
+
return new CliError(ExitCode.NETWORK, "bad_response", e.message);
|
|
78
|
+
case "NETWORK":
|
|
79
|
+
return new CliError(ExitCode.NETWORK, "network_error", `Could not reach the SealMetrics API at ${baseUrl}.`, {
|
|
80
|
+
hint: e.detail,
|
|
98
81
|
});
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
hint: detail.slice(0, 200) || undefined,
|
|
82
|
+
case "BACKEND_ERROR":
|
|
83
|
+
default:
|
|
84
|
+
return new CliError(ExitCode.NETWORK, "backend_error", e.message, {
|
|
85
|
+
hint: e.detail,
|
|
104
86
|
});
|
|
105
|
-
}
|
|
106
|
-
const json = (await this.json(res));
|
|
107
|
-
const data = json.data;
|
|
108
|
-
if (!data || typeof data.installed !== "boolean") {
|
|
109
|
-
throw new CliError(ExitCode.NETWORK, "bad_response", "Pixel status returned an unexpected response.");
|
|
110
|
-
}
|
|
111
|
-
return data;
|
|
112
|
-
}
|
|
113
|
-
async fetchWithTimeout(url, init) {
|
|
114
|
-
const controller = new AbortController();
|
|
115
|
-
const timeout = setTimeout(() => controller.abort(), DEFAULT_TIMEOUT_MS);
|
|
116
|
-
try {
|
|
117
|
-
return await fetch(url, { ...init, signal: controller.signal });
|
|
118
|
-
}
|
|
119
|
-
finally {
|
|
120
|
-
clearTimeout(timeout);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
async json(res) {
|
|
124
|
-
const text = await res.text();
|
|
125
|
-
try {
|
|
126
|
-
return JSON.parse(text);
|
|
127
|
-
}
|
|
128
|
-
catch {
|
|
129
|
-
throw new CliError(ExitCode.NETWORK, "bad_response", "The API returned invalid JSON.");
|
|
130
|
-
}
|
|
131
87
|
}
|
|
132
|
-
async safeText(res) {
|
|
133
|
-
try {
|
|
134
|
-
return await res.text();
|
|
135
|
-
}
|
|
136
|
-
catch {
|
|
137
|
-
return "";
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
function parseRetryAfter(header) {
|
|
142
|
-
if (!header)
|
|
143
|
-
return undefined;
|
|
144
|
-
const n = parseInt(header, 10);
|
|
145
|
-
return Number.isFinite(n) && n > 0 ? n : undefined;
|
|
146
88
|
}
|
|
147
89
|
//# sourceMappingURL=client.js.map
|
package/dist/api/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOnD,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,OAAO,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACb;AAED,iFAAiF;AACjF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOnD,CAAC;AAgDF,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAkBD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,CAkGrD;AAMD,wBAAgB,QAAQ,IAAI,MAAM,CAEjC"}
|
package/dist/cli.js
CHANGED
|
@@ -22,7 +22,8 @@ Provisioning:
|
|
|
22
22
|
--email <email> Account owner email (required to provision)
|
|
23
23
|
--name <name> Owner name
|
|
24
24
|
--site-name <name> Site display name (required to provision; not guessed)
|
|
25
|
-
--domain <domain> Site domain
|
|
25
|
+
--domain <domain> Site domain, e.g. myshop.com (required — without it the
|
|
26
|
+
pixel records no data)
|
|
26
27
|
--accept-tos Accept the Terms of Service (required to provision)
|
|
27
28
|
--install-source <src> Attribution channel (default: npx)
|
|
28
29
|
--api-key <key> Reuse an existing read-only key; skips provisioning
|
|
@@ -51,6 +52,9 @@ Behaviour:
|
|
|
51
52
|
|
|
52
53
|
-h, --help Show this help
|
|
53
54
|
-v, --version Show version
|
|
55
|
+
|
|
56
|
+
Agents: the --agent NDJSON contract (events, exit codes, the confirm gate) is in
|
|
57
|
+
PROTOCOL.md, bundled in this package. Honor it; key rules also ride in the stream.
|
|
54
58
|
`;
|
|
55
59
|
const BOOLEAN_FLAGS = new Set([
|
|
56
60
|
"--accept-tos",
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AA0BrD,iFAAiF;AACjF,MAAM,CAAC,MAAM,gBAAgB,GAA2B;IACtD,IAAI,EAAE,mCAAmC;IACzC,GAAG,EAAE,oCAAoC;IACzC,6EAA6E;IAC7E,gFAAgF;IAChF,kEAAkE;IAClE,KAAK,EAAE,8BAA8B;CACtC,CAAC;AAEF,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC;AAE/C,MAAM,IAAI,GAAG
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ExitCodeValue } from "../exit-codes.js";
|
|
2
|
-
import type
|
|
2
|
+
import { type InitOptions } from "../cli.js";
|
|
3
3
|
import type { Reporter } from "../agent/ndjson.js";
|
|
4
4
|
/** A local/PRE target only seeds the fallback provision key, not the prod npx key. */
|
|
5
5
|
export declare function isNonProdTarget(baseUrl: string): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAUA,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAUA,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,KAAK,WAAW,EAAoB,MAAM,WAAW,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AA8BnD,sFAAsF;AACtF,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAMhE;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CA0U9F;AA8JD,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAY5D;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAa/D"}
|