@albertomarturelo/sii-core 0.8.0 → 0.10.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/CHANGELOG.md +116 -0
- package/dist/adapters/fake/index.d.ts +14 -2
- package/dist/adapters/fake/index.d.ts.map +1 -1
- package/dist/adapters/fake/index.js +21 -1
- package/dist/adapters/fake/index.js.map +1 -1
- package/dist/adapters/node/keyring.d.ts +12 -0
- package/dist/adapters/node/keyring.d.ts.map +1 -0
- package/dist/adapters/node/keyring.js +58 -0
- package/dist/adapters/node/keyring.js.map +1 -0
- package/dist/adapters/node/portal.d.ts.map +1 -1
- package/dist/adapters/node/portal.js +11 -4
- package/dist/adapters/node/portal.js.map +1 -1
- package/dist/adapters/node/response.d.ts +12 -4
- package/dist/adapters/node/response.d.ts.map +1 -1
- package/dist/adapters/node/response.js +32 -7
- package/dist/adapters/node/response.js.map +1 -1
- package/dist/auth/auth.d.ts +42 -6
- package/dist/auth/auth.d.ts.map +1 -1
- package/dist/auth/auth.js +181 -33
- package/dist/auth/auth.js.map +1 -1
- package/dist/auth/session.d.ts +16 -1
- package/dist/auth/session.d.ts.map +1 -1
- package/dist/auth/session.js +12 -0
- package/dist/auth/session.js.map +1 -1
- package/dist/auth/www2-login.d.ts +28 -0
- package/dist/auth/www2-login.d.ts.map +1 -0
- package/dist/auth/www2-login.js +101 -0
- package/dist/auth/www2-login.js.map +1 -0
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +3 -1
- package/dist/cli.js.map +1 -1
- package/dist/config/config.d.ts +18 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +18 -0
- package/dist/config/config.js.map +1 -1
- package/dist/errors/errors.d.ts +25 -0
- package/dist/errors/errors.d.ts.map +1 -1
- package/dist/errors/errors.js +25 -0
- package/dist/errors/errors.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts +6 -1
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +6 -1
- package/dist/node.js.map +1 -1
- package/dist/portal/carpeta-tributaria-regular.d.ts +30 -0
- package/dist/portal/carpeta-tributaria-regular.d.ts.map +1 -0
- package/dist/portal/carpeta-tributaria-regular.js +142 -0
- package/dist/portal/carpeta-tributaria-regular.js.map +1 -0
- package/dist/portal/www2-session.d.ts +13 -0
- package/dist/portal/www2-session.d.ts.map +1 -0
- package/dist/portal/www2-session.js +61 -0
- package/dist/portal/www2-session.js.map +1 -0
- package/dist/seams/index.d.ts +8 -1
- package/dist/seams/index.d.ts.map +1 -1
- package/dist/tasks/auth.d.ts +14 -6
- package/dist/tasks/auth.d.ts.map +1 -1
- package/dist/tasks/auth.js +13 -5
- package/dist/tasks/auth.js.map +1 -1
- package/dist/tasks/carpeta.d.ts +9 -0
- package/dist/tasks/carpeta.d.ts.map +1 -0
- package/dist/tasks/carpeta.js +49 -0
- package/dist/tasks/carpeta.js.map +1 -0
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,KAAK;IAChB,2FAA2F;;IAE3F,+FAA+F;;IAE/F,8FAA8F;;IAE9F,gGAAgG;;;IAGhG,+DAA+D;;IAE/D;;;uFAGmF;;IAEnF;;;;;oFAKgF;;IAEhF;wEACoE;;IAEpE;;;;0BAIsB;;IAEtB;6FACyF;;;CAGjF,CAAC;AAEX,+EAA+E;AAC/E,eAAO,MAAM,UAAU,iBAAiB,CAAC;AAEzC,yCAAyC;AACzC,eAAO,MAAM,SAAS,QAAqC,CAAC;AAE5D,oFAAoF;AACpF,eAAO,MAAM,UAAU,QAAsC,CAAC;AAE9D,MAAM,WAAW,QAAQ;IACvB,sEAAsE;IACtE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,8CAA8C;IAC9C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED,eAAO,MAAM,gBAAgB,EAAE,QAG9B,CAAC;AAEF,yFAAyF;AACzF,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEpD"}
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,KAAK;IAChB,2FAA2F;;IAE3F,+FAA+F;;IAE/F,8FAA8F;;IAE9F,gGAAgG;;;IAGhG,+DAA+D;;IAE/D;;;;2CAIuC;;IAEvC;;;uFAGmF;;IAEnF;;;;;oFAKgF;;IAEhF;wEACoE;;IAEpE;;;;0BAIsB;;IAEtB;6FACyF;;;CAGjF,CAAC;AAEX,+EAA+E;AAC/E,eAAO,MAAM,UAAU,iBAAiB,CAAC;AAEzC,yCAAyC;AACzC,eAAO,MAAM,SAAS,QAAqC,CAAC;AAE5D,oFAAoF;AACpF,eAAO,MAAM,UAAU,QAAsC,CAAC;AAE9D;;oGAEoG;AACpG,eAAO,MAAM,gBAAgB,QAA2D,CAAC;AAEzF;gGACgG;AAChG,eAAO,MAAM,sBAAsB,QAAyC,CAAC;AAE7E;;;sDAGsD;AACtD,eAAO,MAAM,eAAe,QAAQ,CAAC;AAErC,MAAM,WAAW,QAAQ;IACvB,sEAAsE;IACtE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,8CAA8C;IAC9C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED,eAAO,MAAM,gBAAgB,EAAE,QAG9B,CAAC;AAEF,yFAAyF;AACzF,wBAAgB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEpD"}
|
package/dist/config/config.js
CHANGED
|
@@ -13,6 +13,12 @@ export const HOSTS = {
|
|
|
13
13
|
portal: 'https://www.sii.cl',
|
|
14
14
|
/** SPA JSON facades (RCV / F29 / F22) live under this host. */
|
|
15
15
|
portalApi: 'https://www4.sii.cl',
|
|
16
|
+
/** The newer SPA apps + their `/app/<name>-api/*` JSON facades — first the Carpeta
|
|
17
|
+
* Tributaria (`/carpetatributaria/…` SPA over `/app/cte-api-carpetatributaria/{rut}/…`).
|
|
18
|
+
* The `.sii.cl` session cookie SSO-carries, but every `cte-api` call answers 401 until
|
|
19
|
+
* the app's own `GET /app/session/status?originalUrl=…` warm-up ran (observed
|
|
20
|
+
* 2026-09-11, #110). (#109 / #110) */
|
|
21
|
+
portalApp: 'https://www2.sii.cl',
|
|
16
22
|
/** Legacy BHE/BTE consulta CGIs (boletas de honorarios). HTML skeleton filled
|
|
17
23
|
* client-side from inline JS maps; read via `PortalSession.goto`/`evaluate`, NOT
|
|
18
24
|
* the SDI-JSON facade. The `.sii.cl` session cookie SSO-carries here (observed
|
|
@@ -45,6 +51,18 @@ export const LOGIN_HOST = 'zeusr.sii.cl';
|
|
|
45
51
|
export const LOGIN_URL = `${HOSTS.login}${HOSTS.loginPath}`;
|
|
46
52
|
/** Full server-side logout URL (host + path). The close redirects OFF this path. */
|
|
47
53
|
export const LOGOUT_URL = `${HOSTS.login}${HOSTS.logoutPath}`;
|
|
54
|
+
/** The www2 app page `sii auth login --www2` opens for the user to complete SII's OAuth login
|
|
55
|
+
* (`/bifurcacion` → `/oauthsii-v1/` → `/app/session/create` → back here), and the `Referer` /
|
|
56
|
+
* `originalUrl` the Carpeta SPA sends on its own calls. Observed 2026-09-11/12 (#110, ADR-026). */
|
|
57
|
+
export const WWW2_APP_CARPETA = `${HOSTS.portalApp}/carpetatributaria/generarcteregular`;
|
|
58
|
+
/** The www2 app-session close (the SPA's `$logout`: `/app/session/close?originalUrl=…`, from the
|
|
59
|
+
* session library `chunk-vendors.659f67b1.js`, observed 2026-09-11). Best-effort on logout. */
|
|
60
|
+
export const WWW2_SESSION_CLOSE_URL = `${HOSTS.portalApp}/app/session/close`;
|
|
61
|
+
/** The keyring "service" every entry of this tool lives under; the account (`username`
|
|
62
|
+
* in keyring terms) is the RUT. Lives here — with the other environment constants —
|
|
63
|
+
* because BOTH the pure `keyringLogin` task (for its error message) and the Node
|
|
64
|
+
* adapter that reads the store need it (ADR-025). */
|
|
65
|
+
export const KEYRING_SERVICE = 'sii';
|
|
48
66
|
export const DEFAULT_SETTINGS = {
|
|
49
67
|
rateLimitRps: 1,
|
|
50
68
|
sessionTtlMinutes: 60,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,gFAAgF;AAChF,6DAA6D;AAE7D,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,2FAA2F;IAC3F,KAAK,EAAE,sBAAsB;IAC7B,+FAA+F;IAC/F,SAAS,EAAE,mDAAmD;IAC9D,8FAA8F;IAC9F,UAAU,EAAE,6BAA6B;IACzC,gGAAgG;IAChG,KAAK,EAAE,6CAA6C;IACpD,MAAM,EAAE,oBAAoB;IAC5B,+DAA+D;IAC/D,SAAS,EAAE,qBAAqB;IAChC;;;uFAGmF;IACnF,MAAM,EAAE,4BAA4B;IACpC;;;;;oFAKgF;IAChF,OAAO,EAAE,uCAAuC;IAChD;wEACoE;IACpE,UAAU,EAAE,+BAA+B;IAC3C;;;;0BAIsB;IACtB,MAAM,EAAE,oCAAoC;IAC5C;6FACyF;IACzF,KAAK,EAAE,uBAAuB;IAC9B,UAAU,EAAE,sDAAsD;CAC1D,CAAC;AAEX,+EAA+E;AAC/E,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,CAAC;AAEzC,yCAAyC;AACzC,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;AAE5D,oFAAoF;AACpF,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config/config.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,gFAAgF;AAChF,6DAA6D;AAE7D,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,2FAA2F;IAC3F,KAAK,EAAE,sBAAsB;IAC7B,+FAA+F;IAC/F,SAAS,EAAE,mDAAmD;IAC9D,8FAA8F;IAC9F,UAAU,EAAE,6BAA6B;IACzC,gGAAgG;IAChG,KAAK,EAAE,6CAA6C;IACpD,MAAM,EAAE,oBAAoB;IAC5B,+DAA+D;IAC/D,SAAS,EAAE,qBAAqB;IAChC;;;;2CAIuC;IACvC,SAAS,EAAE,qBAAqB;IAChC;;;uFAGmF;IACnF,MAAM,EAAE,4BAA4B;IACpC;;;;;oFAKgF;IAChF,OAAO,EAAE,uCAAuC;IAChD;wEACoE;IACpE,UAAU,EAAE,+BAA+B;IAC3C;;;;0BAIsB;IACtB,MAAM,EAAE,oCAAoC;IAC5C;6FACyF;IACzF,KAAK,EAAE,uBAAuB;IAC9B,UAAU,EAAE,sDAAsD;CAC1D,CAAC;AAEX,+EAA+E;AAC/E,MAAM,CAAC,MAAM,UAAU,GAAG,cAAc,CAAC;AAEzC,yCAAyC;AACzC,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;AAE5D,oFAAoF;AACpF,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;AAE9D;;oGAEoG;AACpG,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,KAAK,CAAC,SAAS,sCAAsC,CAAC;AAEzF;gGACgG;AAChG,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,KAAK,CAAC,SAAS,oBAAoB,CAAC;AAE7E;;;sDAGsD;AACtD,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,CAAC;AASrC,MAAM,CAAC,MAAM,gBAAgB,GAAa;IACxC,YAAY,EAAE,CAAC;IACf,iBAAiB,EAAE,EAAE;CACtB,CAAC;AAEF,yFAAyF;AACzF,MAAM,UAAU,QAAQ,CAAC,WAAmB;IAC1C,OAAO,GAAG,SAAS,IAAI,WAAW,EAAE,CAAC;AACvC,CAAC"}
|
package/dist/errors/errors.d.ts
CHANGED
|
@@ -9,6 +9,12 @@ export declare class NotAuthenticatedError extends SiiError {
|
|
|
9
9
|
* so a generic catch still treats it as "not authenticated". */
|
|
10
10
|
export declare class SessionExpiredError extends NotAuthenticatedError {
|
|
11
11
|
}
|
|
12
|
+
/** The www2 APP SESSION (the second cookies-only layer `www2.sii.cl/app/*` needs — ADR-026) is
|
|
13
|
+
* missing or expired: `/app/session/status` did not answer a session JSON. A subclass of
|
|
14
|
+
* NotAuthenticated because the fix is a login (`sii auth login --www2`), never a retry — but
|
|
15
|
+
* DISTINCT from `SessionExpiredError` (the classic Mi SII session may be perfectly alive). */
|
|
16
|
+
export declare class Www2SessionError extends NotAuthenticatedError {
|
|
17
|
+
}
|
|
12
18
|
/** Browser login was not completed (timeout / window closed). No partial
|
|
13
19
|
* session is ever written. */
|
|
14
20
|
export declare class LoginFailedError extends SiiError {
|
|
@@ -22,6 +28,17 @@ export declare class CredentialNotFoundError extends SiiError {
|
|
|
22
28
|
/** Invalid user input: bad RUT, an operate target not in the operable set, etc. */
|
|
23
29
|
export declare class ValidationError extends SiiError {
|
|
24
30
|
}
|
|
31
|
+
/** An authenticated `requestJson` got a body that is NOT JSON and NOT the login wall —
|
|
32
|
+
* the response reached its destination host (no `LOGIN_HOST` bounce, not HTML) but the
|
|
33
|
+
* body does not parse. Observed 2026-09-11 (GH-111) on the cte-api
|
|
34
|
+
* `obtenerValorParametro` (URL cited in `adapters/node/response.ts`): HTTP 200
|
|
35
|
+
* `text/plain;charset=utf-8` with a bare URL — a live session, a wrong endpoint. Carries
|
|
36
|
+
* the endpoint, HTTP status, content-type and the first ~80 chars of the body VERBATIM
|
|
37
|
+
* (ADR-004), so a facade can tell a SII quirk from a dead session (`SessionExpiredError`)
|
|
38
|
+
* without a second round-trip. NOT a subclass of NotAuthenticated on purpose: re-login
|
|
39
|
+
* would not fix it. */
|
|
40
|
+
export declare class UnexpectedResponseError extends SiiError {
|
|
41
|
+
}
|
|
25
42
|
/** SII rejected a portal/SDI facade request (error envelope or unparseable
|
|
26
43
|
* response). Carries SII's message verbatim — never translated (ADR-004). */
|
|
27
44
|
export declare class RepresentacionError extends SiiError {
|
|
@@ -65,4 +82,12 @@ export declare class PeticionesError extends SiiError {
|
|
|
65
82
|
* `SessionExpiredError`, not this. */
|
|
66
83
|
export declare class DteError extends SiiError {
|
|
67
84
|
}
|
|
85
|
+
/** SII rejected a Carpeta Tributaria (`cte-api`) request, the body was not the observed shape
|
|
86
|
+
* ("scraper roto" — e.g. `/instituciones` not serving an array), the operation is invalid for
|
|
87
|
+
* its session-keyed contract (a representing pointer, ADR-005), OR the user's `--institucion` is
|
|
88
|
+
* not in SII's LIVE list (the message names the valid codes; no round-trip is spent). SII's
|
|
89
|
+
* message verbatim where one exists — never translated (ADR-004). Never retried; a missing www2
|
|
90
|
+
* app session is `Www2SessionError` and a `LOGIN_HOST` bounce `SessionExpiredError`, not this. */
|
|
91
|
+
export declare class CarpetaError extends SiiError {
|
|
92
|
+
}
|
|
68
93
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors/errors.ts"],"names":[],"mappings":"AAIA,qBAAa,QAAS,SAAQ,KAAK;gBACrB,OAAO,EAAE,MAAM;CAI5B;AAED,mEAAmE;AACnE,qBAAa,qBAAsB,SAAQ,QAAQ;CAAG;AAEtD;;iEAEiE;AACjE,qBAAa,mBAAoB,SAAQ,qBAAqB;CAAG;AAEjE;+BAC+B;AAC/B,qBAAa,gBAAiB,SAAQ,QAAQ;CAAG;AAEjD,mFAAmF;AACnF,qBAAa,cAAe,SAAQ,QAAQ;CAAG;AAE/C,oFAAoF;AACpF,qBAAa,uBAAwB,SAAQ,QAAQ;CAAG;AAExD,mFAAmF;AACnF,qBAAa,eAAgB,SAAQ,QAAQ;CAAG;AAEhD;8EAC8E;AAC9E,qBAAa,mBAAoB,SAAQ,QAAQ;CAAG;AAEpD;uFACuF;AACvF,qBAAa,QAAS,SAAQ,QAAQ;CAAG;AAEzC;8EAC8E;AAC9E,qBAAa,QAAS,SAAQ,QAAQ;CAAG;AAEzC;;;wFAGwF;AACxF,qBAAa,QAAS,SAAQ,QAAQ;CAAG;AAEzC;;;eAGe;AACf,qBAAa,QAAS,SAAQ,QAAQ;CAAG;AAEzC;;;;;gFAKgF;AAChF,qBAAa,eAAgB,SAAQ,QAAQ;CAAG;AAEhD;;;;;;;;uCAQuC;AACvC,qBAAa,QAAS,SAAQ,QAAQ;CAAG"}
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors/errors.ts"],"names":[],"mappings":"AAIA,qBAAa,QAAS,SAAQ,KAAK;gBACrB,OAAO,EAAE,MAAM;CAI5B;AAED,mEAAmE;AACnE,qBAAa,qBAAsB,SAAQ,QAAQ;CAAG;AAEtD;;iEAEiE;AACjE,qBAAa,mBAAoB,SAAQ,qBAAqB;CAAG;AAEjE;;;+FAG+F;AAC/F,qBAAa,gBAAiB,SAAQ,qBAAqB;CAAG;AAE9D;+BAC+B;AAC/B,qBAAa,gBAAiB,SAAQ,QAAQ;CAAG;AAEjD,mFAAmF;AACnF,qBAAa,cAAe,SAAQ,QAAQ;CAAG;AAE/C,oFAAoF;AACpF,qBAAa,uBAAwB,SAAQ,QAAQ;CAAG;AAExD,mFAAmF;AACnF,qBAAa,eAAgB,SAAQ,QAAQ;CAAG;AAEhD;;;;;;;;wBAQwB;AACxB,qBAAa,uBAAwB,SAAQ,QAAQ;CAAG;AAExD;8EAC8E;AAC9E,qBAAa,mBAAoB,SAAQ,QAAQ;CAAG;AAEpD;uFACuF;AACvF,qBAAa,QAAS,SAAQ,QAAQ;CAAG;AAEzC;8EAC8E;AAC9E,qBAAa,QAAS,SAAQ,QAAQ;CAAG;AAEzC;;;wFAGwF;AACxF,qBAAa,QAAS,SAAQ,QAAQ;CAAG;AAEzC;;;eAGe;AACf,qBAAa,QAAS,SAAQ,QAAQ;CAAG;AAEzC;;;;;gFAKgF;AAChF,qBAAa,eAAgB,SAAQ,QAAQ;CAAG;AAEhD;;;;;;;;uCAQuC;AACvC,qBAAa,QAAS,SAAQ,QAAQ;CAAG;AAEzC;;;;;mGAKmG;AACnG,qBAAa,YAAa,SAAQ,QAAQ;CAAG"}
|
package/dist/errors/errors.js
CHANGED
|
@@ -15,6 +15,12 @@ export class NotAuthenticatedError extends SiiError {
|
|
|
15
15
|
* so a generic catch still treats it as "not authenticated". */
|
|
16
16
|
export class SessionExpiredError extends NotAuthenticatedError {
|
|
17
17
|
}
|
|
18
|
+
/** The www2 APP SESSION (the second cookies-only layer `www2.sii.cl/app/*` needs — ADR-026) is
|
|
19
|
+
* missing or expired: `/app/session/status` did not answer a session JSON. A subclass of
|
|
20
|
+
* NotAuthenticated because the fix is a login (`sii auth login --www2`), never a retry — but
|
|
21
|
+
* DISTINCT from `SessionExpiredError` (the classic Mi SII session may be perfectly alive). */
|
|
22
|
+
export class Www2SessionError extends NotAuthenticatedError {
|
|
23
|
+
}
|
|
18
24
|
/** Browser login was not completed (timeout / window closed). No partial
|
|
19
25
|
* session is ever written. */
|
|
20
26
|
export class LoginFailedError extends SiiError {
|
|
@@ -28,6 +34,17 @@ export class CredentialNotFoundError extends SiiError {
|
|
|
28
34
|
/** Invalid user input: bad RUT, an operate target not in the operable set, etc. */
|
|
29
35
|
export class ValidationError extends SiiError {
|
|
30
36
|
}
|
|
37
|
+
/** An authenticated `requestJson` got a body that is NOT JSON and NOT the login wall —
|
|
38
|
+
* the response reached its destination host (no `LOGIN_HOST` bounce, not HTML) but the
|
|
39
|
+
* body does not parse. Observed 2026-09-11 (GH-111) on the cte-api
|
|
40
|
+
* `obtenerValorParametro` (URL cited in `adapters/node/response.ts`): HTTP 200
|
|
41
|
+
* `text/plain;charset=utf-8` with a bare URL — a live session, a wrong endpoint. Carries
|
|
42
|
+
* the endpoint, HTTP status, content-type and the first ~80 chars of the body VERBATIM
|
|
43
|
+
* (ADR-004), so a facade can tell a SII quirk from a dead session (`SessionExpiredError`)
|
|
44
|
+
* without a second round-trip. NOT a subclass of NotAuthenticated on purpose: re-login
|
|
45
|
+
* would not fix it. */
|
|
46
|
+
export class UnexpectedResponseError extends SiiError {
|
|
47
|
+
}
|
|
31
48
|
/** SII rejected a portal/SDI facade request (error envelope or unparseable
|
|
32
49
|
* response). Carries SII's message verbatim — never translated (ADR-004). */
|
|
33
50
|
export class RepresentacionError extends SiiError {
|
|
@@ -71,4 +88,12 @@ export class PeticionesError extends SiiError {
|
|
|
71
88
|
* `SessionExpiredError`, not this. */
|
|
72
89
|
export class DteError extends SiiError {
|
|
73
90
|
}
|
|
91
|
+
/** SII rejected a Carpeta Tributaria (`cte-api`) request, the body was not the observed shape
|
|
92
|
+
* ("scraper roto" — e.g. `/instituciones` not serving an array), the operation is invalid for
|
|
93
|
+
* its session-keyed contract (a representing pointer, ADR-005), OR the user's `--institucion` is
|
|
94
|
+
* not in SII's LIVE list (the message names the valid codes; no round-trip is spent). SII's
|
|
95
|
+
* message verbatim where one exists — never translated (ADR-004). Never retried; a missing www2
|
|
96
|
+
* app session is `Www2SessionError` and a `LOGIN_HOST` bounce `SessionExpiredError`, not this. */
|
|
97
|
+
export class CarpetaError extends SiiError {
|
|
98
|
+
}
|
|
74
99
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors/errors.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,2EAA2E;AAC3E,kEAAkE;AAElE,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;IAC9B,CAAC;CACF;AAED,mEAAmE;AACnE,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;CAAG;AAEtD;;iEAEiE;AACjE,MAAM,OAAO,mBAAoB,SAAQ,qBAAqB;CAAG;AAEjE;+BAC+B;AAC/B,MAAM,OAAO,gBAAiB,SAAQ,QAAQ;CAAG;AAEjD,mFAAmF;AACnF,MAAM,OAAO,cAAe,SAAQ,QAAQ;CAAG;AAE/C,oFAAoF;AACpF,MAAM,OAAO,uBAAwB,SAAQ,QAAQ;CAAG;AAExD,mFAAmF;AACnF,MAAM,OAAO,eAAgB,SAAQ,QAAQ;CAAG;AAEhD;8EAC8E;AAC9E,MAAM,OAAO,mBAAoB,SAAQ,QAAQ;CAAG;AAEpD;uFACuF;AACvF,MAAM,OAAO,QAAS,SAAQ,QAAQ;CAAG;AAEzC;8EAC8E;AAC9E,MAAM,OAAO,QAAS,SAAQ,QAAQ;CAAG;AAEzC;;;wFAGwF;AACxF,MAAM,OAAO,QAAS,SAAQ,QAAQ;CAAG;AAEzC;;;eAGe;AACf,MAAM,OAAO,QAAS,SAAQ,QAAQ;CAAG;AAEzC;;;;;gFAKgF;AAChF,MAAM,OAAO,eAAgB,SAAQ,QAAQ;CAAG;AAEhD;;;;;;;;uCAQuC;AACvC,MAAM,OAAO,QAAS,SAAQ,QAAQ;CAAG"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors/errors.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,2EAA2E;AAC3E,kEAAkE;AAElE,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;IAC9B,CAAC;CACF;AAED,mEAAmE;AACnE,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;CAAG;AAEtD;;iEAEiE;AACjE,MAAM,OAAO,mBAAoB,SAAQ,qBAAqB;CAAG;AAEjE;;;+FAG+F;AAC/F,MAAM,OAAO,gBAAiB,SAAQ,qBAAqB;CAAG;AAE9D;+BAC+B;AAC/B,MAAM,OAAO,gBAAiB,SAAQ,QAAQ;CAAG;AAEjD,mFAAmF;AACnF,MAAM,OAAO,cAAe,SAAQ,QAAQ;CAAG;AAE/C,oFAAoF;AACpF,MAAM,OAAO,uBAAwB,SAAQ,QAAQ;CAAG;AAExD,mFAAmF;AACnF,MAAM,OAAO,eAAgB,SAAQ,QAAQ;CAAG;AAEhD;;;;;;;;wBAQwB;AACxB,MAAM,OAAO,uBAAwB,SAAQ,QAAQ;CAAG;AAExD;8EAC8E;AAC9E,MAAM,OAAO,mBAAoB,SAAQ,QAAQ;CAAG;AAEpD;uFACuF;AACvF,MAAM,OAAO,QAAS,SAAQ,QAAQ;CAAG;AAEzC;8EAC8E;AAC9E,MAAM,OAAO,QAAS,SAAQ,QAAQ;CAAG;AAEzC;;;wFAGwF;AACxF,MAAM,OAAO,QAAS,SAAQ,QAAQ;CAAG;AAEzC;;;eAGe;AACf,MAAM,OAAO,QAAS,SAAQ,QAAQ;CAAG;AAEzC;;;;;gFAKgF;AAChF,MAAM,OAAO,eAAgB,SAAQ,QAAQ;CAAG;AAEhD;;;;;;;;uCAQuC;AACvC,MAAM,OAAO,QAAS,SAAQ,QAAQ;CAAG;AAEzC;;;;;mGAKmG;AACnG,MAAM,OAAO,YAAa,SAAQ,QAAQ;CAAG"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { login, logout, authStatus, statusRefresh, whoami } from './tasks/auth.js';
|
|
2
|
-
export type { AuthIdentity, AuthLoginResult, AuthLogoutResult, AuthStatusLocal, AuthWhoami, } from './tasks/auth.js';
|
|
2
|
+
export type { AuthIdentity, AuthIdentityRefresh, AuthLoginResult, AuthLogoutResult, AuthStatusLocal, AuthWhoami, AuthWww2Status, LoginOptions, } from './tasks/auth.js';
|
|
3
3
|
export { operate, operateSelf, operatingStatus, listOperable } from './tasks/operate.js';
|
|
4
4
|
export type { OperateResult, OperableList } from './tasks/operate.js';
|
|
5
5
|
export { describeOperating, formatOperableEntry } from './identity/index.js';
|
|
@@ -16,6 +16,8 @@ export type { DteAutorizados, DteAutorizado, DteBorradorArgs, DteBorradorRow, Dt
|
|
|
16
16
|
export type { BteMensual, BteBoleta, BteTotales, BteSide, BteEmitArgs, BteEmitResult, BteEmitida, BtePreview, BteRetiene, BteLineaEmision, } from './tasks/bte.js';
|
|
17
17
|
export { peticionesList } from './tasks/peticiones.js';
|
|
18
18
|
export type { PeticionesResult, Peticion, EstadoPeticion } from './tasks/peticiones.js';
|
|
19
|
+
export { carpetaInstituciones } from './tasks/carpeta.js';
|
|
20
|
+
export type { CarpetaInstitucion } from './tasks/carpeta.js';
|
|
19
21
|
export type { AuditEntry, AuditSink, Clock, CredentialLoginOptions, InteractiveLoginOptions, KeyValueStore, PortalDriver, PortalSession, Runtime, SecretStore, } from './seams/index.js';
|
|
20
22
|
export { Rut } from './rut/index.js';
|
|
21
23
|
export { formatMoney, formatRut } from './format/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACnF,YAAY,EACV,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -14,6 +14,7 @@ export { f29Formulario, f29Overview, f29Pdf, f29Status, F29_GRUPO_LABELS, F29_PD
|
|
|
14
14
|
export { bteList, bteEmitPreview, bteEmit } from './tasks/bte.js';
|
|
15
15
|
export { dteAuthorized, dteEmpresas, dteBorradorList, dteBorradorSave, dteBorradorDelete, dtePreviewPdf, dteEmitidos, dtePdf, TIPOS_DTE, MAX_ITEMS, } from './tasks/dte.js';
|
|
16
16
|
export { peticionesList } from './tasks/peticiones.js';
|
|
17
|
+
export { carpetaInstituciones } from './tasks/carpeta.js';
|
|
17
18
|
// --- shared primitives ---
|
|
18
19
|
export { Rut } from './rut/index.js';
|
|
19
20
|
export { formatMoney, formatRut } from './format/index.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,gFAAgF;AAChF,6EAA6E;AAE7E,uCAAuC;AACvC,mFAAmF;AACnF,mGAAmG;AACnG,gDAAgD;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,iGAAiG;AACjG,gFAAgF;AAChF,6EAA6E;AAE7E,uCAAuC;AACvC,mFAAmF;AACnF,mGAAmG;AACnG,gDAAgD;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAWnF,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEzF,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE7E,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAUjE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAaxF,OAAO,EACL,aAAa,EACb,WAAW,EACX,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAkBxB,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EACL,aAAa,EACb,WAAW,EACX,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,MAAM,EACN,SAAS,EACT,SAAS,GACV,MAAM,gBAAgB,CAAC;AA+BxB,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAmB1D,4BAA4B;AAC5B,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACtD,cAAc,mBAAmB,CAAC;AAElC,2EAA2E;AAC3E,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC"}
|
package/dist/node.d.ts
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
import type { Runtime } from './seams/index.js';
|
|
2
2
|
export { DOCUMENTOS_DIR, FileAuditSink, FileKeyValueStore, NodeFileSink, SII_DIR, SystemClock, } from './adapters/node/index.js';
|
|
3
|
+
export { KeyringSecretStore } from './adapters/node/keyring.js';
|
|
3
4
|
export { PlaywrightPortalDriver } from './adapters/node/portal.js';
|
|
4
5
|
/** Composition root: the Node default adapters, any seam replaceable (ADR-016).
|
|
5
6
|
* e.g. `createNodeRuntime({ audit: myAuditSink })` keeps the other three defaults.
|
|
6
7
|
* The default portal is the Playwright driver — its `playwright` OPTIONAL peer is
|
|
7
|
-
* loaded lazily on first use, so composing (or overriding `portal`) never needs it.
|
|
8
|
+
* loaded lazily on first use, so composing (or overriding `portal`) never needs it.
|
|
9
|
+
* `secrets` is DELIBERATELY not defaulted here: the OS keyring is wired by the CLI's
|
|
10
|
+
* composition root alone (`createNodeRuntime({ secrets: new KeyringSecretStore() })`),
|
|
11
|
+
* so the MCP server — which builds from this same function — carries no keyring at all
|
|
12
|
+
* (ADR-006 / ADR-025). */
|
|
8
13
|
export declare function createNodeRuntime(overrides?: Partial<Runtime>): Runtime;
|
|
9
14
|
//# sourceMappingURL=node.d.ts.map
|
package/dist/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EACL,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EACL,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE;;;;;;;2BAO2B;AAC3B,wBAAgB,iBAAiB,CAAC,SAAS,GAAE,OAAO,CAAC,OAAO,CAAM,GAAG,OAAO,CAS3E"}
|
package/dist/node.js
CHANGED
|
@@ -5,11 +5,16 @@
|
|
|
5
5
|
import { FileAuditSink, FileKeyValueStore, NodeFileSink, SystemClock, } from './adapters/node/index.js';
|
|
6
6
|
import { PlaywrightPortalDriver } from './adapters/node/portal.js';
|
|
7
7
|
export { DOCUMENTOS_DIR, FileAuditSink, FileKeyValueStore, NodeFileSink, SII_DIR, SystemClock, } from './adapters/node/index.js';
|
|
8
|
+
export { KeyringSecretStore } from './adapters/node/keyring.js';
|
|
8
9
|
export { PlaywrightPortalDriver } from './adapters/node/portal.js';
|
|
9
10
|
/** Composition root: the Node default adapters, any seam replaceable (ADR-016).
|
|
10
11
|
* e.g. `createNodeRuntime({ audit: myAuditSink })` keeps the other three defaults.
|
|
11
12
|
* The default portal is the Playwright driver — its `playwright` OPTIONAL peer is
|
|
12
|
-
* loaded lazily on first use, so composing (or overriding `portal`) never needs it.
|
|
13
|
+
* loaded lazily on first use, so composing (or overriding `portal`) never needs it.
|
|
14
|
+
* `secrets` is DELIBERATELY not defaulted here: the OS keyring is wired by the CLI's
|
|
15
|
+
* composition root alone (`createNodeRuntime({ secrets: new KeyringSecretStore() })`),
|
|
16
|
+
* so the MCP server — which builds from this same function — carries no keyring at all
|
|
17
|
+
* (ADR-006 / ADR-025). */
|
|
13
18
|
export function createNodeRuntime(overrides = {}) {
|
|
14
19
|
return {
|
|
15
20
|
clock: new SystemClock(),
|
package/dist/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,gFAAgF;AAChF,+EAA+E;AAC/E,oEAAoE;AACpE,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,OAAO,EACL,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,gFAAgF;AAChF,+EAA+E;AAC/E,oEAAoE;AACpE,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,OAAO,EACL,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE;;;;;;;2BAO2B;AAC3B,MAAM,UAAU,iBAAiB,CAAC,YAA8B,EAAE;IAChE,OAAO;QACL,KAAK,EAAE,IAAI,WAAW,EAAE;QACxB,KAAK,EAAE,IAAI,aAAa,EAAE;QAC1B,KAAK,EAAE,IAAI,iBAAiB,EAAE;QAC9B,MAAM,EAAE,IAAI,sBAAsB,EAAE;QACpC,KAAK,EAAE,IAAI,YAAY,EAAE;QACzB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Www2Session } from './www2-session.js';
|
|
2
|
+
import type { PortalSession } from '../seams/index.js';
|
|
3
|
+
/** A destination institution the Carpeta can be addressed to — SII's live catalog row, curated
|
|
4
|
+
* (all 8 observed keys; a public registry of entities, no taxpayer data). `codigo` is the
|
|
5
|
+
* `enfinCodigo` that `/generar` demands (#109); kept as a STRING because SII zero-pads some
|
|
6
|
+
* (`"016"`, `"059"`) and not others (`"1005"`) and compares it verbatim. */
|
|
7
|
+
export interface CarpetaInstitucion {
|
|
8
|
+
readonly codigo: string;
|
|
9
|
+
readonly descripcion: string | null;
|
|
10
|
+
readonly abreviacion: string | null;
|
|
11
|
+
/** SII's institution class (`enfinTipo`, observed 3 = corredora, 4 = otra; catalog-defined). */
|
|
12
|
+
readonly tipo: number | null;
|
|
13
|
+
/** The institution's own RUT (canonical), or null. Public entity data. */
|
|
14
|
+
readonly rut: string | null;
|
|
15
|
+
readonly vigenteDesde: string | null;
|
|
16
|
+
/** null = still vigente (observed on every row so far). */
|
|
17
|
+
readonly vigenteHasta: string | null;
|
|
18
|
+
}
|
|
19
|
+
/** `GET …/{userId}/…/instituciones` — SII's live list of destination institutions. `userId`
|
|
20
|
+
* comes from `readWww2Session` (the SPA keys the path by it verbatim). Empty array = a
|
|
21
|
+
* legitimate "no rows"; a non-array body = "scraper roto". */
|
|
22
|
+
export declare function fetchInstituciones(session: PortalSession, app: Www2Session): Promise<readonly CarpetaInstitucion[]>;
|
|
23
|
+
/** App-session read + `/instituciones` in one call: the read behind `sii carpeta instituciones`.
|
|
24
|
+
* A multi-step flow (#109) reads the session ONCE and calls the `fetch*` steps itself. */
|
|
25
|
+
export declare function listInstituciones(session: PortalSession): Promise<readonly CarpetaInstitucion[]>;
|
|
26
|
+
/** Validate the user's `--institucion` against SII's LIVE list and return the matching row.
|
|
27
|
+
* Fails BEFORE any `/generar` POST, naming the valid codes (like `--empresa` vs the MIPYME
|
|
28
|
+
* chooser, ADR-023) — a stale code never costs a SII round-trip. The consumer is #109. */
|
|
29
|
+
export declare function resolveInstitucion(codigo: string, instituciones: readonly CarpetaInstitucion[]): CarpetaInstitucion;
|
|
30
|
+
//# sourceMappingURL=carpeta-tributaria-regular.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"carpeta-tributaria-regular.d.ts","sourceRoot":"","sources":["../../src/portal/carpeta-tributaria-regular.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAavD;;;6EAG6E;AAC7E,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,gGAAgG;IAChG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,0EAA0E;IAC1E,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,2DAA2D;IAC3D,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AA+DD;;+DAE+D;AAC/D,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CA0BxC;AAED;2FAC2F;AAC3F,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAGxC;AAED;;2FAE2F;AAC3F,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,SAAS,kBAAkB,EAAE,GAC3C,kBAAkB,CAapB"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
// Carpeta Tributaria Regular — typed facade over the `www2.sii.cl` `cte-api-carpetatributaria`
|
|
2
|
+
// JSON facade (`PortalSession.requestJson`). First-hand-observed, no third-party library
|
|
3
|
+
// (ADR-004); full wire contract + the auth-layer finding in docs/sii-contract/carpeta-tributaria.md.
|
|
4
|
+
//
|
|
5
|
+
// The SPA is `https://www2.sii.cl/carpetatributaria/generarcteregular`; its API lives under
|
|
6
|
+
// `/app/cte-api-carpetatributaria/{userId}/recurso/v2/carpeta-tributaria/…`. Observed 2026-09-11
|
|
7
|
+
// (#110), from the shipped bundles (`carpetatributaria/js/app.c2aeeb0d.js`, the shared session
|
|
8
|
+
// library in `chunk-vendors.659f67b1.js`) and live probes:
|
|
9
|
+
//
|
|
10
|
+
// 1. THE APP SESSION. `www2.sii.cl/app/*` needs the www2 app session, a second cookies-only
|
|
11
|
+
// layer the classic jar does not carry (ADR-026) — read FIRST via the shared
|
|
12
|
+
// `portal/www2-session.ts`, whose `userId` keys every path below verbatim. Missing ⇒
|
|
13
|
+
// `Www2SessionError` (a NotAuthenticated), never a warm-up retry.
|
|
14
|
+
// 2. (The session read and its observations live in `www2-session.ts`.)
|
|
15
|
+
// 3. LIVE CATALOG. `/instituciones` is the ONLY source of a valid `enfinCodigo` (what `/generar`
|
|
16
|
+
// demands, #109). The codes drift — a hardcoded catalog went stale and SII rejected it — so
|
|
17
|
+
// this module never ships one: the user's choice is validated against SII's list at call
|
|
18
|
+
// time, like `--empresa` against the MIPYME chooser (ADR-023).
|
|
19
|
+
//
|
|
20
|
+
// Auth: SESSION-KEYED like F29 (ADR-005): the app session IS the principal; the task rejects a
|
|
21
|
+
// representing pointer up front. PII: the institution rows are a public catalog — curated, no
|
|
22
|
+
// `raw`. Nothing here touches the Carpeta document itself (#109, ADR-022 descriptor).
|
|
23
|
+
import { z } from 'zod';
|
|
24
|
+
import { HOSTS, WWW2_APP_CARPETA } from '../config/index.js';
|
|
25
|
+
import { CarpetaError, NotAuthenticatedError } from '../errors/index.js';
|
|
26
|
+
import { Rut } from '../rut/index.js';
|
|
27
|
+
import { readWww2Session } from './www2-session.js';
|
|
28
|
+
/** The SPA page ("Generar Carpeta Tributaria Regular"): the `Referer` the API expects and the
|
|
29
|
+
* `originalUrl` the session read carries (observed 2026-09-11). Also the `--www2` login page. */
|
|
30
|
+
const GENERAR_PAGE = WWW2_APP_CARPETA;
|
|
31
|
+
const API = `${HOSTS.portalApp}/app/cte-api-carpetatributaria`;
|
|
32
|
+
// The SPA's XHR headers (observed 2026-09-11): a JSON Accept + the page as Referer.
|
|
33
|
+
const HEADERS = {
|
|
34
|
+
Accept: 'application/json, text/plain, */*',
|
|
35
|
+
Referer: GENERAR_PAGE,
|
|
36
|
+
};
|
|
37
|
+
// --- Wire shapes (zod-at-the-boundary, ADR-011) ---------------------------------------
|
|
38
|
+
// `.loose()` rows: unobserved fields survive; projection is alias-tolerant (observed name
|
|
39
|
+
// first — ADR-004). `/instituciones` answers a BARE JSON ARRAY (no SDI `respEstado` envelope —
|
|
40
|
+
// this is the newer `cte-api`, not the www4 SDI facades).
|
|
41
|
+
const Row = z.record(z.string(), z.unknown());
|
|
42
|
+
const Instituciones = z.array(Row);
|
|
43
|
+
// Observed 2026-09-12 on `/instituciones` (67 rows): `{enfinCodigo, enfinDescripcion,
|
|
44
|
+
// enfinAbreviacion, enfinFechaVigDesde, enfinFechaVigHasta, enfinTipo, enfinRutInstitucion,
|
|
45
|
+
// enfinDvInstitucion}` — the SPA itself reads `e.enfinCodigo` / `e.enfinAbreviacion`.
|
|
46
|
+
const ALIASES = {
|
|
47
|
+
codigo: ['enfinCodigo', 'codigo'],
|
|
48
|
+
descripcion: ['enfinDescripcion', 'descripcion'],
|
|
49
|
+
abreviacion: ['enfinAbreviacion', 'abreviacion'],
|
|
50
|
+
tipo: ['enfinTipo', 'tipo'],
|
|
51
|
+
rutDigits: ['enfinRutInstitucion', 'rutInstitucion'],
|
|
52
|
+
dv: ['enfinDvInstitucion', 'dvInstitucion'],
|
|
53
|
+
vigenteDesde: ['enfinFechaVigDesde', 'fechaVigDesde'],
|
|
54
|
+
vigenteHasta: ['enfinFechaVigHasta', 'fechaVigHasta'],
|
|
55
|
+
};
|
|
56
|
+
function aliasGet(row, keys) {
|
|
57
|
+
for (const k of keys)
|
|
58
|
+
if (row[k] !== undefined && row[k] !== null)
|
|
59
|
+
return row[k];
|
|
60
|
+
return undefined;
|
|
61
|
+
}
|
|
62
|
+
const asStr = (v) => {
|
|
63
|
+
if (typeof v === 'string')
|
|
64
|
+
return v.trim() === '' ? null : v.trim();
|
|
65
|
+
if (typeof v === 'number')
|
|
66
|
+
return String(v);
|
|
67
|
+
return null;
|
|
68
|
+
};
|
|
69
|
+
const asInt = (v) => {
|
|
70
|
+
if (typeof v === 'number' && Number.isInteger(v))
|
|
71
|
+
return v;
|
|
72
|
+
if (typeof v === 'string' && /^\d+$/.test(v.trim()))
|
|
73
|
+
return Number(v.trim());
|
|
74
|
+
return null;
|
|
75
|
+
};
|
|
76
|
+
// `enfinRutInstitucion` (digits) + `enfinDvInstitucion` → canonical, Mod-11-checked; null if odd.
|
|
77
|
+
const canonicalRutFrom = (digits, dv) => digits === undefined || dv === undefined
|
|
78
|
+
? null
|
|
79
|
+
: (Rut.tryParse(`${String(digits)}-${String(dv).trim()}`)?.canonical ?? null);
|
|
80
|
+
function curate(row) {
|
|
81
|
+
const codigo = asStr(aliasGet(row, ALIASES.codigo));
|
|
82
|
+
if (codigo === null) {
|
|
83
|
+
// A row without its key field means the shape moved: fail loud, never guess (ADR-004).
|
|
84
|
+
throw new CarpetaError('Scraper roto: una fila de /instituciones (Carpeta Tributaria) no trae `enfinCodigo`; ' +
|
|
85
|
+
'el SII cambió la forma de la lista.');
|
|
86
|
+
}
|
|
87
|
+
return {
|
|
88
|
+
codigo,
|
|
89
|
+
descripcion: asStr(aliasGet(row, ALIASES.descripcion)),
|
|
90
|
+
abreviacion: asStr(aliasGet(row, ALIASES.abreviacion)),
|
|
91
|
+
tipo: asInt(aliasGet(row, ALIASES.tipo)),
|
|
92
|
+
rut: canonicalRutFrom(aliasGet(row, ALIASES.rutDigits), aliasGet(row, ALIASES.dv)),
|
|
93
|
+
vigenteDesde: asStr(aliasGet(row, ALIASES.vigenteDesde)),
|
|
94
|
+
vigenteHasta: asStr(aliasGet(row, ALIASES.vigenteHasta)),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/** `GET …/{userId}/…/instituciones` — SII's live list of destination institutions. `userId`
|
|
98
|
+
* comes from `readWww2Session` (the SPA keys the path by it verbatim). Empty array = a
|
|
99
|
+
* legitimate "no rows"; a non-array body = "scraper roto". */
|
|
100
|
+
export async function fetchInstituciones(session, app) {
|
|
101
|
+
let raw;
|
|
102
|
+
try {
|
|
103
|
+
raw = await session.requestJson(`${API}/${encodeURIComponent(app.userId)}/recurso/v2/carpeta-tributaria/instituciones`, { method: 'GET', headers: HEADERS });
|
|
104
|
+
}
|
|
105
|
+
catch (e) {
|
|
106
|
+
// A dead session is an ACTIONABLE NotAuthenticated (the seam detects the login wall) — let
|
|
107
|
+
// it through verbatim. Anything else (a 401 body, the wrong endpoint) is a typed CarpetaError
|
|
108
|
+
// carrying the seam's verbatim detail (ADR-004), never a raw Playwright error.
|
|
109
|
+
if (e instanceof NotAuthenticatedError)
|
|
110
|
+
throw e;
|
|
111
|
+
throw new CarpetaError(`Respuesta inesperada del SII en /instituciones (Carpeta Tributaria): ${e instanceof Error ? e.message : String(e)}`);
|
|
112
|
+
}
|
|
113
|
+
const parsed = Instituciones.safeParse(raw);
|
|
114
|
+
if (!parsed.success) {
|
|
115
|
+
throw new CarpetaError('Scraper roto: /instituciones (Carpeta Tributaria) no devolvió un arreglo JSON de ' +
|
|
116
|
+
'instituciones; el SII cambió la forma de la lista.');
|
|
117
|
+
}
|
|
118
|
+
return parsed.data.map(curate);
|
|
119
|
+
}
|
|
120
|
+
/** App-session read + `/instituciones` in one call: the read behind `sii carpeta instituciones`.
|
|
121
|
+
* A multi-step flow (#109) reads the session ONCE and calls the `fetch*` steps itself. */
|
|
122
|
+
export async function listInstituciones(session) {
|
|
123
|
+
const app = await readWww2Session(session, GENERAR_PAGE);
|
|
124
|
+
return fetchInstituciones(session, app);
|
|
125
|
+
}
|
|
126
|
+
/** Validate the user's `--institucion` against SII's LIVE list and return the matching row.
|
|
127
|
+
* Fails BEFORE any `/generar` POST, naming the valid codes (like `--empresa` vs the MIPYME
|
|
128
|
+
* chooser, ADR-023) — a stale code never costs a SII round-trip. The consumer is #109. */
|
|
129
|
+
export function resolveInstitucion(codigo, instituciones) {
|
|
130
|
+
const wanted = codigo.trim();
|
|
131
|
+
const hit = instituciones.find((i) => i.codigo === wanted);
|
|
132
|
+
if (hit)
|
|
133
|
+
return hit;
|
|
134
|
+
const opciones = instituciones
|
|
135
|
+
.map((i) => `${i.codigo}${i.abreviacion ? ` (${i.abreviacion})` : ''}`)
|
|
136
|
+
.join(', ');
|
|
137
|
+
throw new CarpetaError(`La institución "${wanted}" no está en la lista vigente del SII para la Carpeta Tributaria. ` +
|
|
138
|
+
(instituciones.length === 0
|
|
139
|
+
? 'El SII no devolvió instituciones.'
|
|
140
|
+
: `Códigos válidos (sii carpeta instituciones): ${opciones}.`));
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=carpeta-tributaria-regular.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"carpeta-tributaria-regular.js","sourceRoot":"","sources":["../../src/portal/carpeta-tributaria-regular.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { PortalSession } from '../seams/index.js';
|
|
2
|
+
/** The www2 app session as `/app/session/status` describes it. Only `userId` is load-bearing
|
|
3
|
+
* (it keys every `/app/<name>-api` path); the rest is kept for diagnostics. */
|
|
4
|
+
export interface Www2Session {
|
|
5
|
+
readonly userId: string;
|
|
6
|
+
readonly userAuthType: string | null;
|
|
7
|
+
}
|
|
8
|
+
/** Read the www2 app session (see the header). Resolves `{userId}` when one exists; raises the
|
|
9
|
+
* ACTIONABLE `Www2SessionError` (a `NotAuthenticated`) when www2 answers anything but a 200
|
|
10
|
+
* session JSON — the classic session alone never reaches this layer. `originalUrl` is the app
|
|
11
|
+
* page the SPA would pass (observed optional; the answer is the same without it). Never retried. */
|
|
12
|
+
export declare function readWww2Session(session: PortalSession, originalUrl?: string): Promise<Www2Session>;
|
|
13
|
+
//# sourceMappingURL=www2-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"www2-session.d.ts","sourceRoot":"","sources":["../../src/portal/www2-session.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIvD;gFACgF;AAChF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAKD;;;qGAGqG;AACrG,wBAAsB,eAAe,CACnC,OAAO,EAAE,aAAa,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,WAAW,CAAC,CAmCtB"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
// The www2 APP SESSION — the second cookies-only layer every `www2.sii.cl/app/*` facade needs
|
|
2
|
+
// (ADR-026). Shared by all www2 apps (first: Carpeta Tributaria, `carpeta-tributaria-regular.ts`),
|
|
3
|
+
// so a new app reuses this read instead of inventing a per-app warm-up.
|
|
4
|
+
//
|
|
5
|
+
// Observed 2026-09-11/12 (#110; docs/sii-contract/carpeta-tributaria.md): the classic `.sii.cl`
|
|
6
|
+
// cookies the cookies-only login holds reach www1/www3/www4/loa but NOT `/app/<name>-api/*` — those
|
|
7
|
+
// answer a bare 401 until the OAuth2 flow (`/app/session/login` → `/oauthsii-v1/` → `/app/session/
|
|
8
|
+
// create`) minted the httpOnly `.sii.cl` pair `X-SII-STATE-CT` + `X-SII-STATE-TYPE` (~100 min). The
|
|
9
|
+
// SPA's own liveness read is `GET /app/session/status` (session library `j()`): 200 → JSON
|
|
10
|
+
// `{seconds, userId, userProfiles, userAuthType, authTime, userRte}` committed to vuex; anything
|
|
11
|
+
// else → no session (the SPA then bounces to `/bifurcacion`). Every app keys its API paths by
|
|
12
|
+
// `session.userId` VERBATIM (the canonical `<body>-<dv>` RUT, observed) — so this read is where a
|
|
13
|
+
// facade gets its path key; it never formats a RUT for it.
|
|
14
|
+
//
|
|
15
|
+
// Reached via `requestText`: a non-JSON 401 body is EXPECTED here, and a dead classic jar is still
|
|
16
|
+
// caught URL-based (the `LOGIN_HOST` bounce → `SessionExpiredError`).
|
|
17
|
+
import { z } from 'zod';
|
|
18
|
+
import { HOSTS } from '../config/index.js';
|
|
19
|
+
import { Www2SessionError } from '../errors/index.js';
|
|
20
|
+
const SESSION_STATUS_URL = `${HOSTS.portalApp}/app/session/status`;
|
|
21
|
+
// Observed 2026-09-12 (live app session). `.loose()`: the other fields ride along unvalidated.
|
|
22
|
+
const SessionJson = z.object({ userId: z.union([z.string(), z.number()]) }).loose();
|
|
23
|
+
/** Read the www2 app session (see the header). Resolves `{userId}` when one exists; raises the
|
|
24
|
+
* ACTIONABLE `Www2SessionError` (a `NotAuthenticated`) when www2 answers anything but a 200
|
|
25
|
+
* session JSON — the classic session alone never reaches this layer. `originalUrl` is the app
|
|
26
|
+
* page the SPA would pass (observed optional; the answer is the same without it). Never retried. */
|
|
27
|
+
export async function readWww2Session(session, originalUrl) {
|
|
28
|
+
const url = originalUrl === undefined
|
|
29
|
+
? SESSION_STATUS_URL
|
|
30
|
+
: `${SESSION_STATUS_URL}?originalUrl=${encodeURIComponent(originalUrl)}`;
|
|
31
|
+
const res = await session.requestText(url, {
|
|
32
|
+
method: 'GET',
|
|
33
|
+
headers: {
|
|
34
|
+
Accept: 'application/json, text/plain, */*',
|
|
35
|
+
...(originalUrl === undefined ? {} : { Referer: originalUrl }),
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
let parsed = null;
|
|
39
|
+
if (res.status === 200) {
|
|
40
|
+
try {
|
|
41
|
+
parsed = JSON.parse(res.body);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
parsed = null; // the SPA shell HTML (a 200 on a cold hit) is "no session" too
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const app = parsed === null ? null : SessionJson.safeParse(parsed);
|
|
48
|
+
if (!app || !app.success) {
|
|
49
|
+
throw new Www2SessionError('No hay sesión en la plataforma www2 del SII (www2.sii.cl/app/*), que autoriza con una ' +
|
|
50
|
+
'sesión propia (login OAuth) y no con la sesión de Mi SII que esta herramienta guarda ' +
|
|
51
|
+
`(HTTP ${res.status}${res.status === 200 ? ' sin JSON de sesión' : ''} en ` +
|
|
52
|
+
'/app/session/status). Iniciarla aún no está soportado — ADR-026 la define como un ' +
|
|
53
|
+
'segundo login en el navegador (`sii auth login --www2`, pendiente).');
|
|
54
|
+
}
|
|
55
|
+
const authType = app.data['userAuthType'];
|
|
56
|
+
return {
|
|
57
|
+
userId: String(app.data.userId),
|
|
58
|
+
userAuthType: typeof authType === 'string' ? authType : null,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=www2-session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"www2-session.js","sourceRoot":"","sources":["../../src/portal/www2-session.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,mGAAmG;AACnG,wEAAwE;AACxE,EAAE;AACF,gGAAgG;AAChG,oGAAoG;AACpG,mGAAmG;AACnG,oGAAoG;AACpG,2FAA2F;AAC3F,iGAAiG;AACjG,8FAA8F;AAC9F,kGAAkG;AAClG,2DAA2D;AAC3D,EAAE;AACF,mGAAmG;AACnG,sEAAsE;AACtE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAGtD,MAAM,kBAAkB,GAAG,GAAG,KAAK,CAAC,SAAS,qBAAqB,CAAC;AASnE,+FAA+F;AAC/F,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AAEpF;;;qGAGqG;AACrG,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAsB,EACtB,WAAoB;IAEpB,MAAM,GAAG,GACP,WAAW,KAAK,SAAS;QACvB,CAAC,CAAC,kBAAkB;QACpB,CAAC,CAAC,GAAG,kBAAkB,gBAAgB,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;IAC7E,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE;QACzC,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,MAAM,EAAE,mCAAmC;YAC3C,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;SAC/D;KACF,CAAC,CAAC;IACH,IAAI,MAAM,GAAY,IAAI,CAAC;IAC3B,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAY,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,IAAI,CAAC,CAAC,+DAA+D;QAChF,CAAC;IACH,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACnE,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,gBAAgB,CACxB,wFAAwF;YACtF,uFAAuF;YACvF,SAAS,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,MAAM;YAC3E,oFAAoF;YACpF,qEAAqE,CACxE,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1C,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/B,YAAY,EAAE,OAAO,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;KAC7D,CAAC;AACJ,CAAC"}
|
package/dist/seams/index.d.ts
CHANGED
|
@@ -30,6 +30,10 @@ export interface SecretStore {
|
|
|
30
30
|
set(account: string, secret: string): Promise<void>;
|
|
31
31
|
delete(account: string): Promise<void>;
|
|
32
32
|
}
|
|
33
|
+
/** What a RUNTIME may carry: the read half only. Storing the Clave is the user's own
|
|
34
|
+
* act with their own tool, so no task can write to the keyring even by mistake — the
|
|
35
|
+
* guarantee is a type, not a promise (ADR-025). */
|
|
36
|
+
export type SecretReader = Pick<SecretStore, 'get'>;
|
|
33
37
|
/** A logged-in browser context (cookies loaded). All portal reads go through
|
|
34
38
|
* here, so the core never imports Playwright. */
|
|
35
39
|
export interface JsonRequest {
|
|
@@ -176,6 +180,9 @@ export interface Runtime {
|
|
|
176
180
|
* one. `createNodeRuntime` always wires the Node default; a task that needs it and finds
|
|
177
181
|
* it missing raises an actionable error rather than failing obscurely. */
|
|
178
182
|
readonly files?: FileSink;
|
|
179
|
-
|
|
183
|
+
/** OPTIONAL and READ-ONLY: the OS keyring, wired by the CLI's composition root only —
|
|
184
|
+
* never by the MCP server's, so that surface has no keyring BY CONSTRUCTION and not
|
|
185
|
+
* by "no code happens to call it" (ADR-006 / ADR-025). */
|
|
186
|
+
readonly secrets?: SecretReader;
|
|
180
187
|
}
|
|
181
188
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/seams/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/seams/index.ts"],"names":[],"mappings":"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"}
|