@albertomarturelo/sii-core 0.12.2 → 0.13.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 CHANGED
@@ -4,6 +4,24 @@ All notable changes to `@albertomarturelo/sii-core` are documented here. The for
4
4
  loosely based on [Keep a Changelog](https://keepachangelog.com/); the package is
5
5
  pre-1.0, so MINOR bumps may carry breaking changes (pin or use `~` downstream).
6
6
 
7
+ ## 0.13.0 — 2026-10-19
8
+
9
+ ### Added
10
+
11
+ - **`SII_HOME` (#164).** `siiDir()` returns `$SII_HOME` when it is set to an absolute path, and
12
+ `~/.sii` when it is unset or empty. The fs store (session, `operate` pointer, rejection latch),
13
+ `FileAuditSink` and `documentosDir()` all derive from it. A relative or `~` value throws a
14
+ `ValidationError` (kind `validation`) naming the variable.
15
+
16
+ ### Changed
17
+
18
+ - **Breaking (`./node` subpath): `SII_DIR` → `siiDir()`, `DOCUMENTOS_DIR` → `documentosDir()`.**
19
+ Both read the environment when called, never at import, so a bad `SII_HOME` reaches the
20
+ surface's error handler instead of crashing the import. The main barrel still reads no
21
+ environment (ADR-016 amendment).
22
+ - **`createNodeRuntime` builds a default only for a seam not overridden.** Supplying your own
23
+ `store` and `audit` no longer reads `SII_HOME` at all.
24
+
7
25
  ## 0.12.2 — 2026-10-19
8
26
 
9
27
  ### Fixed
@@ -1,10 +1,17 @@
1
1
  import type { AuditEntry, AuditSink, Clock, FileSink, KeyValueStore } from '../../seams/index.js';
2
- export declare const SII_DIR: string;
2
+ /** The CLI/MCP state directory: `$SII_HOME`, or `~/.sii` when it is unset or empty (#164).
3
+ * Session, `operate` pointer, rejection latch, audit and documents all live under it, so a
4
+ * host that persists only one path (Grok Bot keeps `/workspace`) points it there instead of
5
+ * symlinking `~/.sii`. Read when a default adapter is BUILT, never at import: a bad value
6
+ * must reach the surface's error handler as a `validation` error, not crash the import. A
7
+ * relative or `~` value is refused, never resolved against the cwd — a cron's cwd moves,
8
+ * and a state dir that silently moves loses the latch (ADR-028). */
9
+ export declare function siiDir(env?: NodeJS.ProcessEnv): string;
3
10
  export declare class SystemClock implements Clock {
4
11
  now(): Date;
5
12
  sleep(ms: number): Promise<void>;
6
13
  }
7
- /** fs-backed JSON store: ~/.sii/<key>.json, dir 0700 / files 0600, atomic write. */
14
+ /** fs-backed JSON store: <siiDir>/<key>.json, dir 0700 / files 0600, atomic write. */
8
15
  export declare class FileKeyValueStore implements KeyValueStore {
9
16
  private readonly baseDir;
10
17
  constructor(baseDir?: string);
@@ -13,15 +20,15 @@ export declare class FileKeyValueStore implements KeyValueStore {
13
20
  write<T>(key: string, value: T): Promise<void>;
14
21
  delete(key: string): Promise<void>;
15
22
  }
16
- /** Append-only JSONL receipt: ~/.sii/audit.jsonl. Best-effort, never throws. */
23
+ /** Append-only JSONL receipt: <siiDir>/audit.jsonl. Best-effort, never throws once built. */
17
24
  export declare class FileAuditSink implements AuditSink {
18
25
  private readonly path;
19
26
  constructor(path?: string);
20
27
  record(entry: AuditEntry): void;
21
28
  }
22
- /** Default document destination: ~/.sii/documentos (ADR-022). A downloaded artifact is a
29
+ /** Default document destination: <siiDir>/documentos (ADR-022). A downloaded artifact is a
23
30
  * tax document, so it lands under the tool's own dir unless the user names another. */
24
- export declare const DOCUMENTOS_DIR: string;
31
+ export declare function documentosDir(env?: NodeJS.ProcessEnv): string;
25
32
  /** fs-backed FileSink: writes a produced document, creating the directory. Files are 0600
26
33
  * — these are PII-dense tax documents (ADR-006 / ADR-022). A leading `~` is expanded so a
27
34
  * user- or model-supplied `~/Downloads` works as typed. */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/node/index.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAElG,eAAO,MAAM,OAAO,QAA0B,CAAC;AAE/C,qBAAa,WAAY,YAAW,KAAK;IACvC,GAAG,IAAI,IAAI;IAGX,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGjC;AAED,oFAAoF;AACpF,qBAAa,iBAAkB,YAAW,aAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,GAAE,MAAgB;IACtD,OAAO,CAAC,OAAO;IAGT,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAQvC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOzC;AAED,gFAAgF;AAChF,qBAAa,aAAc,YAAW,SAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,GAAE,MAAqC;IACxE,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAQhC;AAED;wFACwF;AACxF,eAAO,MAAM,cAAc,QAA8B,CAAC;AAE1D;;4DAE4D;AAC5D,qBAAa,YAAa,YAAW,QAAQ;IACrC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;CAQ3E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/adapters/node/index.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAElG;;;;;;qEAMqE;AACrE,wBAAgB,MAAM,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CASnE;AAED,qBAAa,WAAY,YAAW,KAAK;IACvC,GAAG,IAAI,IAAI;IAGX,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGjC;AAED,sFAAsF;AACtF,qBAAa,iBAAkB,YAAW,aAAa;IACzC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,GAAE,MAAiB;IACvD,OAAO,CAAC,OAAO;IAGT,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAQvC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAO9C,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAOzC;AAED,6FAA6F;AAC7F,qBAAa,aAAc,YAAW,SAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,GAAE,MAAsC;IACzE,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;CAQhC;AAED;wFACwF;AACxF,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAE1E;AAED;;4DAE4D;AAC5D,qBAAa,YAAa,YAAW,QAAQ;IACrC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;CAQ3E"}
@@ -2,8 +2,24 @@
2
2
  // Playwright PortalDriver lands with the auth increment (ADR-008).
3
3
  import { promises as fsp, appendFileSync, mkdirSync } from 'node:fs';
4
4
  import { homedir } from 'node:os';
5
- import { dirname, join, resolve } from 'node:path';
6
- export const SII_DIR = join(homedir(), '.sii');
5
+ import { dirname, isAbsolute, join, resolve } from 'node:path';
6
+ import { ValidationError } from '../../errors/index.js';
7
+ /** The CLI/MCP state directory: `$SII_HOME`, or `~/.sii` when it is unset or empty (#164).
8
+ * Session, `operate` pointer, rejection latch, audit and documents all live under it, so a
9
+ * host that persists only one path (Grok Bot keeps `/workspace`) points it there instead of
10
+ * symlinking `~/.sii`. Read when a default adapter is BUILT, never at import: a bad value
11
+ * must reach the surface's error handler as a `validation` error, not crash the import. A
12
+ * relative or `~` value is refused, never resolved against the cwd — a cron's cwd moves,
13
+ * and a state dir that silently moves loses the latch (ADR-028). */
14
+ export function siiDir(env = process.env) {
15
+ const value = env['SII_HOME'];
16
+ if (value === undefined || value === '')
17
+ return join(homedir(), '.sii');
18
+ if (value.startsWith('~') || !isAbsolute(value)) {
19
+ throw new ValidationError(`SII_HOME debe ser una ruta absoluta (p. ej. /workspace/.sii); se recibió "${value}".`);
20
+ }
21
+ return resolve(value);
22
+ }
7
23
  export class SystemClock {
8
24
  now() {
9
25
  return new Date();
@@ -12,10 +28,10 @@ export class SystemClock {
12
28
  return new Promise((resolve) => setTimeout(resolve, ms));
13
29
  }
14
30
  }
15
- /** fs-backed JSON store: ~/.sii/<key>.json, dir 0700 / files 0600, atomic write. */
31
+ /** fs-backed JSON store: <siiDir>/<key>.json, dir 0700 / files 0600, atomic write. */
16
32
  export class FileKeyValueStore {
17
33
  baseDir;
18
- constructor(baseDir = SII_DIR) {
34
+ constructor(baseDir = siiDir()) {
19
35
  this.baseDir = baseDir;
20
36
  }
21
37
  pathFor(key) {
@@ -46,10 +62,10 @@ export class FileKeyValueStore {
46
62
  }
47
63
  }
48
64
  }
49
- /** Append-only JSONL receipt: ~/.sii/audit.jsonl. Best-effort, never throws. */
65
+ /** Append-only JSONL receipt: <siiDir>/audit.jsonl. Best-effort, never throws once built. */
50
66
  export class FileAuditSink {
51
67
  path;
52
- constructor(path = join(SII_DIR, 'audit.jsonl')) {
68
+ constructor(path = join(siiDir(), 'audit.jsonl')) {
53
69
  this.path = path;
54
70
  }
55
71
  record(entry) {
@@ -62,9 +78,11 @@ export class FileAuditSink {
62
78
  }
63
79
  }
64
80
  }
65
- /** Default document destination: ~/.sii/documentos (ADR-022). A downloaded artifact is a
81
+ /** Default document destination: <siiDir>/documentos (ADR-022). A downloaded artifact is a
66
82
  * tax document, so it lands under the tool's own dir unless the user names another. */
67
- export const DOCUMENTOS_DIR = join(SII_DIR, 'documentos');
83
+ export function documentosDir(env = process.env) {
84
+ return join(siiDir(env), 'documentos');
85
+ }
68
86
  /** fs-backed FileSink: writes a produced document, creating the directory. Files are 0600
69
87
  * — these are PII-dense tax documents (ADR-006 / ADR-022). A leading `~` is expanded so a
70
88
  * user- or model-supplied `~/Downloads` works as typed. */
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/node/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/node/index.ts"],"names":[],"mappings":"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"}
package/dist/node.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { Runtime } from './seams/index.js';
2
- export { DOCUMENTOS_DIR, FileAuditSink, FileKeyValueStore, NodeFileSink, SII_DIR, SystemClock, } from './adapters/node/index.js';
2
+ export { FileAuditSink, FileKeyValueStore, NodeFileSink, SystemClock, documentosDir, siiDir, } from './adapters/node/index.js';
3
3
  export { KeyringSecretStore } from './adapters/node/keyring.js';
4
4
  export { HttpPortalDriver } from './adapters/node/http.js';
5
5
  export { PlaywrightPortalDriver } from './adapters/node/portal.js';
@@ -13,6 +13,9 @@ export { PlaywrightPortalDriver } from './adapters/node/portal.js';
13
13
  * `secrets` is DELIBERATELY not defaulted here: the OS keyring is wired by the CLI's
14
14
  * composition root alone (`createNodeRuntime({ secrets: new KeyringSecretStore() })`),
15
15
  * so the MCP server — which builds from this same function — carries no keyring at all
16
- * (ADR-006 / ADR-025). */
16
+ * (ADR-006 / ADR-025).
17
+ * A default is built only for a seam NOT overridden: the fs defaults read `SII_HOME`
18
+ * (`siiDir()`), and a consumer that supplies its own `store` and `audit` must not be
19
+ * refused over a variable it never uses. */
17
20
  export declare function createNodeRuntime(overrides?: Partial<Runtime>): Runtime;
18
21
  //# sourceMappingURL=node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAYA,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,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE;;;;;;;;;;2BAU2B;AAC3B,wBAAgB,iBAAiB,CAAC,SAAS,GAAE,OAAO,CAAC,OAAO,CAAM,GAAG,OAAO,CAU3E"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,aAAa,EACb,MAAM,GACP,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE;;;;;;;;;;;;;6CAa6C;AAC7C,wBAAgB,iBAAiB,CAAC,SAAS,GAAE,OAAO,CAAC,OAAO,CAAM,GAAG,OAAO,CAU3E"}
package/dist/node.js CHANGED
@@ -5,7 +5,7 @@
5
5
  import { FileAuditSink, FileKeyValueStore, NodeFileSink, SystemClock, } from './adapters/node/index.js';
6
6
  import { HttpPortalDriver } from './adapters/node/http.js';
7
7
  import { PlaywrightPortalDriver } from './adapters/node/portal.js';
8
- export { DOCUMENTOS_DIR, FileAuditSink, FileKeyValueStore, NodeFileSink, SII_DIR, SystemClock, } from './adapters/node/index.js';
8
+ export { FileAuditSink, FileKeyValueStore, NodeFileSink, SystemClock, documentosDir, siiDir, } from './adapters/node/index.js';
9
9
  export { KeyringSecretStore } from './adapters/node/keyring.js';
10
10
  export { HttpPortalDriver } from './adapters/node/http.js';
11
11
  export { PlaywrightPortalDriver } from './adapters/node/portal.js';
@@ -19,15 +19,18 @@ export { PlaywrightPortalDriver } from './adapters/node/portal.js';
19
19
  * `secrets` is DELIBERATELY not defaulted here: the OS keyring is wired by the CLI's
20
20
  * composition root alone (`createNodeRuntime({ secrets: new KeyringSecretStore() })`),
21
21
  * so the MCP server — which builds from this same function — carries no keyring at all
22
- * (ADR-006 / ADR-025). */
22
+ * (ADR-006 / ADR-025).
23
+ * A default is built only for a seam NOT overridden: the fs defaults read `SII_HOME`
24
+ * (`siiDir()`), and a consumer that supplies its own `store` and `audit` must not be
25
+ * refused over a variable it never uses. */
23
26
  export function createNodeRuntime(overrides = {}) {
24
27
  return {
25
- clock: new SystemClock(),
26
- audit: new FileAuditSink(),
27
- store: new FileKeyValueStore(),
28
- portal: new HttpPortalDriver(),
29
- browser: new PlaywrightPortalDriver(),
30
- files: new NodeFileSink(),
28
+ clock: overrides.clock ?? new SystemClock(),
29
+ audit: overrides.audit ?? new FileAuditSink(),
30
+ store: overrides.store ?? new FileKeyValueStore(),
31
+ portal: overrides.portal ?? new HttpPortalDriver(),
32
+ browser: overrides.browser ?? new PlaywrightPortalDriver(),
33
+ files: overrides.files ?? new NodeFileSink(),
31
34
  ...overrides,
32
35
  };
33
36
  }
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,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,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,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE;;;;;;;;;;2BAU2B;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,gBAAgB,EAAE;QAC9B,OAAO,EAAE,IAAI,sBAAsB,EAAE;QACrC,KAAK,EAAE,IAAI,YAAY,EAAE;QACzB,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
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,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,aAAa,EACb,MAAM,GACP,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAEnE;;;;;;;;;;;;;6CAa6C;AAC7C,MAAM,UAAU,iBAAiB,CAAC,YAA8B,EAAE;IAChE,OAAO;QACL,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,IAAI,WAAW,EAAE;QAC3C,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,IAAI,aAAa,EAAE;QAC7C,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,IAAI,iBAAiB,EAAE;QACjD,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,IAAI,gBAAgB,EAAE;QAClD,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,IAAI,sBAAsB,EAAE;QAC1D,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,IAAI,YAAY,EAAE;QAC5C,GAAG,SAAS;KACb,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@albertomarturelo/sii-core",
3
- "version": "0.12.2",
3
+ "version": "0.13.0",
4
4
  "type": "module",
5
5
  "description": "Shared SII domain core: rut, config (prod hostnames), contracts, tasks, seams. A Node library; external side-effects (portal, secrets, audit, clock) are injected via seams (ADR-003).",
6
6
  "license": "MIT",