@gregiteen/ssss-cli 0.11.0 → 0.11.1

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,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.11.1] - 2026-10-19
11
+ ### Fixed
12
+ - The frontmatter parser (`@gregiteen/ssss-cli/frontmatter`) now reads the YAML
13
+ that Total Recall and other tools actually write. It previously dropped
14
+ hyphenated keys (`allowed-tools`), truncated wrapped values, split quoted
15
+ commas inside inline arrays, left JSON flow maps and arrays of JSON objects
16
+ as strings, turned tags like `context:universal` into maps, and kept
17
+ trailing `# comments`; `patch` then wrote those mis-parsed values back to
18
+ disk. Verified against 27,536 vault files across 55 Total Recall brains: the
19
+ only differences from a js-yaml reading are leading-zero codes and ISO
20
+ timestamps, which SSSS keeps as strings on purpose (spec §4.5).
21
+ - The serializer quotes strings containing commas or a leading indicator and
22
+ writes nested objects inside inline arrays as JSON, so values round-trip.
23
+
24
+ ### Added
25
+ - `scripts/check-frontmatter.mjs`, run by `npm test`.
26
+ - Documents a broken writer flattened onto one line with literal `\n` text
27
+ (23 such vault files exist) are repaired automatically on read, and
28
+ `repairEscapedNewlines` is exported from `@gregiteen/ssss-cli/frontmatter`.
29
+ `scripts/autolink.mjs` now uses the shared frontmatter parser.
30
+
10
31
  ## [0.11.0] - 2026-10-13
11
32
  ### Added
12
33
  - `trigger` gains `event_subject` and `event_match`, and `assistant` gains `owns`.
package/VERSION CHANGED
@@ -1 +1 @@
1
- 0.11.0
1
+ 0.11.1
@@ -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.1"
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.1",
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
+ }