@gregiteen/ssss-cli 0.11.0 → 0.11.2

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
@@ -7,6 +7,34 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.11.2] - 2026-10-19
11
+ ### Added
12
+ - `parseFrontmatter(fm, { strict: true })` throws a `SyntaxError` on lines that
13
+ are not `key: value`, orphaned indentation, and malformed quoted or inline
14
+ values, so hosts such as Total Recall can report unreadable files. The default
15
+ stays lenient. Strict mode accepts all 30,518 files in 57 Total Recall vaults.
16
+
17
+ ## [0.11.1] - 2026-10-19
18
+ ### Fixed
19
+ - The frontmatter parser (`@gregiteen/ssss-cli/frontmatter`) now reads the YAML
20
+ that Total Recall and other tools actually write. It previously dropped
21
+ hyphenated keys (`allowed-tools`), truncated wrapped values, split quoted
22
+ commas inside inline arrays, left JSON flow maps and arrays of JSON objects
23
+ as strings, turned tags like `context:universal` into maps, and kept
24
+ trailing `# comments`; `patch` then wrote those mis-parsed values back to
25
+ disk. Verified against 27,536 vault files across 55 Total Recall brains: the
26
+ only differences from a js-yaml reading are leading-zero codes and ISO
27
+ timestamps, which SSSS keeps as strings on purpose (spec §4.5).
28
+ - The serializer quotes strings containing commas or a leading indicator and
29
+ writes nested objects inside inline arrays as JSON, so values round-trip.
30
+
31
+ ### Added
32
+ - `scripts/check-frontmatter.mjs`, run by `npm test`.
33
+ - Documents a broken writer flattened onto one line with literal `\n` text
34
+ (23 such vault files exist) are repaired automatically on read, and
35
+ `repairEscapedNewlines` is exported from `@gregiteen/ssss-cli/frontmatter`.
36
+ `scripts/autolink.mjs` now uses the shared frontmatter parser.
37
+
10
38
  ## [0.11.0] - 2026-10-13
11
39
  ### Added
12
40
  - `trigger` gains `event_subject` and `event_match`, and `assistant` gains `owns`.
package/VERSION CHANGED
@@ -1 +1 @@
1
- 0.11.0
1
+ 0.11.2
@@ -106,7 +106,7 @@
106
106
  "file_count": 14,
107
107
  "provenance": {
108
108
  "content_hash": "sha256:7febd673938a3dc04c068e0bf08097a9783c09e612606d2df9a4db8dcb8907f5",
109
- "exporter": "@gregiteen/ssss-cli@0.10.3"
109
+ "exporter": "@gregiteen/ssss-cli@0.11.2"
110
110
  }
111
111
  },
112
112
  "files": [
package/docs/ssss-spec.md CHANGED
@@ -210,9 +210,21 @@ exactly this subset.
210
210
  under the first. A map entry may itself hold an inline array.
211
211
  - **Folded strings**: `>` and `>-` block scalars.
212
212
 
213
- Anchors, aliases, tags, multi-document streams, and flow maps (`{a: 1}`) are
214
- outside the subset. A host MAY accept them but MUST NOT require them, and
215
- authors SHOULD NOT use them in documents that leave the host.
213
+ Anchors, aliases, tags, and multi-document streams are outside the subset.
214
+ Flow maps (`{a: 1}`) and JSON-style inline values (`[{"a": 1}]`) are also
215
+ outside it, but the reference parser reads them because other tools write them
216
+ (for example Total Recall's JSON-shaped metadata). A host MAY accept any of
217
+ these but MUST NOT require them, and authors SHOULD NOT use them in documents
218
+ that leave the host.
219
+
220
+ Where the reference parser reads a form YAML 1.2 also defines, it follows YAML:
221
+ keys may contain `-`, `.` and `@`; a `:` only splits a key when whitespace or
222
+ end of line follows, so `context:universal` is a value; plain and quoted
223
+ scalars may wrap onto indented continuation lines; a trailing ` # comment` on
224
+ an unquoted value is dropped; and a block list may sit at its key's indent.
225
+ Two deliberate deviations keep values lossless: an integer with a leading zero
226
+ (`07885`) stays a **string**, since it is a code and not a number, and
227
+ timestamps stay strings, as above.
216
228
 
217
229
  ---
218
230
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gregiteen/ssss-cli",
3
- "version": "0.11.0",
3
+ "version": "0.11.2",
4
4
  "description": "CLI tools and the reference engine for the Structured Semantic Syntax System",
5
5
  "main": "src/engine.mjs",
6
6
  "exports": {
@@ -56,7 +56,7 @@
56
56
  ],
57
57
  "scripts": {
58
58
  "conformance": "node ./scripts/conformance.mjs conformance",
59
- "test": "node ./scripts/conformance.mjs conformance --engine && node ./scripts/check-events-streaming.mjs"
59
+ "test": "node ./scripts/conformance.mjs conformance --engine && node ./scripts/check-events-streaming.mjs && node ./scripts/check-frontmatter.mjs"
60
60
  },
61
61
  "keywords": [
62
62
  "ssss",
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://ssss.dev/registry/v1",
3
+ "description": "Extensions composed when a caller does not scope a registry load. Extensions NOT listed here are product-specific: a host loads one only when it is operating on that product's vault, passing the extension name explicitly (`ssss export --ext <name>`). This keeps two unrelated products from colliding on a shared primitive name, which §5.6 makes a load-time error.",
4
+ "default_extensions": ["festech"]
5
+ }