@joshuaswarren/openclaw-engram 9.3.4 → 9.3.5

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.
@@ -318,6 +318,63 @@
318
318
  }
319
319
  }
320
320
  },
321
+ "procedural": {
322
+ "type": "object",
323
+ "additionalProperties": false,
324
+ "default": {},
325
+ "properties": {
326
+ "enabled": {
327
+ "type": "boolean",
328
+ "default": false,
329
+ "description": "Master gate for procedural memory: extraction, recall boost, and mining (issue #519)."
330
+ },
331
+ "minOccurrences": {
332
+ "type": "integer",
333
+ "minimum": 0,
334
+ "maximum": 1000,
335
+ "default": 3,
336
+ "description": "Minimum clustered trajectory occurrences before emitting a candidate procedure (0 disables mining)."
337
+ },
338
+ "successFloor": {
339
+ "type": "number",
340
+ "minimum": 0,
341
+ "maximum": 1,
342
+ "default": 0.7,
343
+ "description": "Minimum success-rate floor (from trajectory outcomes) for miner promotion."
344
+ },
345
+ "autoPromoteOccurrences": {
346
+ "type": "integer",
347
+ "minimum": 0,
348
+ "maximum": 10000,
349
+ "default": 8,
350
+ "description": "When auto-promotion is enabled, minimum occurrence count to move pending_review procedures to active (0 disables auto-promotion by count)."
351
+ },
352
+ "autoPromoteEnabled": {
353
+ "type": "boolean",
354
+ "default": false,
355
+ "description": "When true, miner may auto-promote trusted procedures to active after autoPromoteOccurrences."
356
+ },
357
+ "lookbackDays": {
358
+ "type": "integer",
359
+ "minimum": 1,
360
+ "maximum": 3650,
361
+ "default": 30,
362
+ "description": "Trajectory lookback window for procedural mining."
363
+ },
364
+ "recallMaxProcedures": {
365
+ "type": "integer",
366
+ "minimum": 1,
367
+ "maximum": 10,
368
+ "default": 3,
369
+ "description": "Maximum procedure memories to inject on task-initiation recall."
370
+ },
371
+ "proceduralMiningCronAutoRegister": {
372
+ "type": "boolean",
373
+ "default": false,
374
+ "description": "When true, installer may register the nightly procedural mining cron job."
375
+ }
376
+ }
377
+ },
321
378
  "slotBehavior": {
322
379
  "type": "object",
323
380
  "additionalProperties": false,
@@ -1299,7 +1356,8 @@
1299
1356
  "principle",
1300
1357
  "commitment",
1301
1358
  "moment",
1302
- "skill"
1359
+ "skill",
1360
+ "procedure"
1303
1361
  ]
1304
1362
  },
1305
1363
  "default": [
@@ -1874,6 +1932,46 @@
1874
1932
  "default": false,
1875
1933
  "description": "If true, include temporally-superseded facts in recall results (for audit/history). Default: exclude."
1876
1934
  },
1935
+ "recallDirectAnswerEnabled": {
1936
+ "type": "boolean",
1937
+ "default": false,
1938
+ "description": "When true, recall checks whether a single validated high-trust memory can answer the query before QMD runs (issue #518). Default off until bench validation."
1939
+ },
1940
+ "recallDirectAnswerTokenOverlapFloor": {
1941
+ "type": "number",
1942
+ "minimum": 0,
1943
+ "maximum": 1,
1944
+ "default": 0.55,
1945
+ "description": "Minimum query↔memory token-overlap ratio for direct-answer eligibility. Set to 0 to disable the gate."
1946
+ },
1947
+ "recallDirectAnswerImportanceFloor": {
1948
+ "type": "number",
1949
+ "minimum": 0,
1950
+ "maximum": 1,
1951
+ "default": 0.7,
1952
+ "description": "Minimum calibrated importance score for direct-answer eligibility. Set to 0 to disable the gate."
1953
+ },
1954
+ "recallDirectAnswerAmbiguityMargin": {
1955
+ "type": "number",
1956
+ "minimum": 0,
1957
+ "maximum": 1,
1958
+ "default": 0.15,
1959
+ "description": "If the second-best candidate scores within this ratio of the top, direct-answer defers to hybrid."
1960
+ },
1961
+ "recallDirectAnswerEligibleTaxonomyBuckets": {
1962
+ "type": "array",
1963
+ "items": {
1964
+ "type": "string"
1965
+ },
1966
+ "default": [
1967
+ "decisions",
1968
+ "principles",
1969
+ "conventions",
1970
+ "runbooks",
1971
+ "entities"
1972
+ ],
1973
+ "description": "Taxonomy category IDs eligible for direct-answer routing."
1974
+ },
1877
1975
  "memoryLinkingEnabled": {
1878
1976
  "type": "boolean",
1879
1977
  "default": false,
@@ -2560,7 +2658,8 @@
2560
2658
  },
2561
2659
  "default": [
2562
2660
  "correction",
2563
- "commitment"
2661
+ "commitment",
2662
+ "procedure"
2564
2663
  ],
2565
2664
  "description": "Memory categories excluded from semantic consolidation."
2566
2665
  },
@@ -2973,7 +3072,8 @@
2973
3072
  "commitment",
2974
3073
  "preference",
2975
3074
  "decision",
2976
- "principle"
3075
+ "principle",
3076
+ "procedure"
2977
3077
  ],
2978
3078
  "description": "Categories that protect a fact from archival regardless of other criteria."
2979
3079
  },
@@ -3011,7 +3111,8 @@
3011
3111
  "decision",
3012
3112
  "principle",
3013
3113
  "commitment",
3014
- "preference"
3114
+ "preference",
3115
+ "procedure"
3015
3116
  ],
3016
3117
  "description": "Categories that lifecycle policy will not auto-archive."
3017
3118
  },
@@ -3589,6 +3690,7 @@
3589
3690
  },
3590
3691
  "briefing": {
3591
3692
  "type": "object",
3693
+ "additionalProperties": false,
3592
3694
  "default": {
3593
3695
  "enabled": true,
3594
3696
  "defaultWindow": "yesterday",
@@ -3599,6 +3701,52 @@
3599
3701
  "saveDir": null,
3600
3702
  "llmFollowups": true
3601
3703
  },
3704
+ "properties": {
3705
+ "enabled": {
3706
+ "type": "boolean",
3707
+ "default": true
3708
+ },
3709
+ "defaultWindow": {
3710
+ "type": "string",
3711
+ "default": "yesterday"
3712
+ },
3713
+ "defaultFormat": {
3714
+ "type": "string",
3715
+ "enum": [
3716
+ "markdown",
3717
+ "json"
3718
+ ],
3719
+ "default": "markdown"
3720
+ },
3721
+ "maxFollowups": {
3722
+ "type": "integer",
3723
+ "minimum": 0,
3724
+ "maximum": 10,
3725
+ "default": 5
3726
+ },
3727
+ "calendarSource": {
3728
+ "type": [
3729
+ "string",
3730
+ "null"
3731
+ ],
3732
+ "default": null
3733
+ },
3734
+ "saveByDefault": {
3735
+ "type": "boolean",
3736
+ "default": false
3737
+ },
3738
+ "saveDir": {
3739
+ "type": [
3740
+ "string",
3741
+ "null"
3742
+ ],
3743
+ "default": null
3744
+ },
3745
+ "llmFollowups": {
3746
+ "type": "boolean",
3747
+ "default": true
3748
+ }
3749
+ },
3602
3750
  "description": "Daily Context Briefing (#370). Knobs: enabled, defaultWindow ('yesterday', '3d', '1w', '24h', ...), defaultFormat (markdown|json), maxFollowups (0-10), calendarSource (path to ICS/JSON file, null = off), saveByDefault, saveDir (null = $REMNIC_HOME/briefings/), llmFollowups (disable to skip Responses API calls)."
3603
3751
  },
3604
3752
  "enrichmentEnabled": {
@@ -3910,6 +4058,30 @@
3910
4058
  "advanced": true,
3911
4059
  "help": "If enabled, superseded facts still surface in recall (audit/history mode)."
3912
4060
  },
4061
+ "recallDirectAnswerEnabled": {
4062
+ "label": "Direct-Answer Retrieval Tier",
4063
+ "help": "Route validated high-trust queries to a fast direct-answer path before QMD (issue #518)."
4064
+ },
4065
+ "recallDirectAnswerTokenOverlapFloor": {
4066
+ "label": "Direct-Answer Token Overlap Floor",
4067
+ "advanced": true,
4068
+ "placeholder": "0.55"
4069
+ },
4070
+ "recallDirectAnswerImportanceFloor": {
4071
+ "label": "Direct-Answer Importance Floor",
4072
+ "advanced": true,
4073
+ "placeholder": "0.7"
4074
+ },
4075
+ "recallDirectAnswerAmbiguityMargin": {
4076
+ "label": "Direct-Answer Ambiguity Margin",
4077
+ "advanced": true,
4078
+ "placeholder": "0.15"
4079
+ },
4080
+ "recallDirectAnswerEligibleTaxonomyBuckets": {
4081
+ "label": "Direct-Answer Eligible Taxonomy Buckets",
4082
+ "advanced": true,
4083
+ "help": "Taxonomy category IDs eligible for direct-answer routing."
4084
+ },
3913
4085
  "memoryLinkingEnabled": {
3914
4086
  "label": "Memory Linking",
3915
4087
  "help": "Build knowledge graph by linking related memories"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@joshuaswarren/openclaw-engram",
3
- "version": "9.3.4",
3
+ "version": "9.3.5",
4
4
  "description": "Deprecated compatibility shim for Engram installs. Re-exports @remnic/plugin-openclaw and forwards engram-access to @remnic/core.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -31,8 +31,8 @@
31
31
  ]
32
32
  },
33
33
  "dependencies": {
34
- "@remnic/core": "^1.0.2",
35
- "@remnic/plugin-openclaw": "^1.0.5"
34
+ "@remnic/plugin-openclaw": "^1.0.6",
35
+ "@remnic/core": "^1.0.3"
36
36
  },
37
37
  "peerDependencies": {
38
38
  "openclaw": ">=2026.4.8"