@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 +28 -0
- package/VERSION +1 -1
- package/conformance/reference-bundle.ucw.json +1 -1
- package/docs/ssss-spec.md +15 -3
- package/package.json +2 -2
- package/registry/extensions/defaults.json +5 -0
- package/registry/extensions/festech.json +1055 -74
- package/registry/extensions/field-crm.json +1018 -0
- package/scripts/audit-registry-field-usage.mjs +6 -0
- package/scripts/autolink.mjs +8 -13
- package/scripts/check-events-streaming.mjs +46 -1
- package/scripts/check-frontmatter.mjs +117 -0
- package/scripts/cmd-export.mjs +3 -0
- package/scripts/cmd-import.mjs +7 -1
- package/src/bundle.mjs +28 -8
- package/src/engine.mjs +4 -1
- package/src/events.mjs +100 -8
- package/src/frontmatter.mjs +274 -59
- package/src/kernel.mjs +22 -0
- package/src/registry.mjs +48 -6
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.
|
|
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.
|
|
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
|
|
214
|
-
|
|
215
|
-
|
|
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.
|
|
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
|
+
}
|