@dotdotgod/hermes 0.6.5 → 0.6.7
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/README.md +8 -5
- package/__init__.py +5 -9
- package/mcp/cli.mjs +534 -299
- package/mcp/parsers/TYPESCRIPT_LICENSE +21 -0
- package/mcp/parsers/tree-sitter-tsx.wasm +0 -0
- package/mcp/parsers/tree-sitter-typescript.wasm +0 -0
- package/mcp/server.mjs +245 -86
- package/mcp/tools.json +110 -24
- package/package.json +2 -2
- package/plugin.yaml +33 -1
- package/policy.py +1 -1
- package/runtime.py +11 -11
- package/skills/document-clarify/SKILL.md +1 -1
- package/skills/impact-review/SKILL.md +1 -1
- package/skills/project-initializer/SKILL.md +1 -1
- package/skills/project-initializer/references/agent-docs.md +1 -0
- package/skills/project-load/SKILL.md +1 -1
package/mcp/tools.json
CHANGED
|
@@ -60,10 +60,6 @@
|
|
|
60
60
|
"project"
|
|
61
61
|
]
|
|
62
62
|
},
|
|
63
|
-
"ttlMs": {
|
|
64
|
-
"type": "integer",
|
|
65
|
-
"minimum": 0
|
|
66
|
-
},
|
|
67
63
|
"env": {
|
|
68
64
|
"type": "object",
|
|
69
65
|
"additionalProperties": {
|
|
@@ -104,6 +100,10 @@
|
|
|
104
100
|
"timeoutMs": {
|
|
105
101
|
"type": "integer",
|
|
106
102
|
"exclusiveMinimum": 0
|
|
103
|
+
},
|
|
104
|
+
"contextSessionId": {
|
|
105
|
+
"type": "string",
|
|
106
|
+
"description": "Host session identity; adapters supply this for shared MCP connections."
|
|
107
107
|
}
|
|
108
108
|
},
|
|
109
109
|
"required": [
|
|
@@ -191,10 +191,6 @@
|
|
|
191
191
|
"project"
|
|
192
192
|
]
|
|
193
193
|
},
|
|
194
|
-
"ttlMs": {
|
|
195
|
-
"type": "integer",
|
|
196
|
-
"minimum": 0
|
|
197
|
-
},
|
|
198
194
|
"env": {
|
|
199
195
|
"type": "object",
|
|
200
196
|
"additionalProperties": {
|
|
@@ -217,6 +213,10 @@
|
|
|
217
213
|
"type": "string"
|
|
218
214
|
},
|
|
219
215
|
"maxItems": 100
|
|
216
|
+
},
|
|
217
|
+
"contextSessionId": {
|
|
218
|
+
"type": "string",
|
|
219
|
+
"description": "Host session identity; adapters supply this for shared MCP connections."
|
|
220
220
|
}
|
|
221
221
|
},
|
|
222
222
|
"required": [
|
|
@@ -257,10 +257,6 @@
|
|
|
257
257
|
"project"
|
|
258
258
|
]
|
|
259
259
|
},
|
|
260
|
-
"ttlMs": {
|
|
261
|
-
"type": "integer",
|
|
262
|
-
"minimum": 0
|
|
263
|
-
},
|
|
264
260
|
"maxBytes": {
|
|
265
261
|
"type": "integer",
|
|
266
262
|
"exclusiveMinimum": 0
|
|
@@ -297,6 +293,10 @@
|
|
|
297
293
|
"maxAggregateBytes": {
|
|
298
294
|
"type": "integer",
|
|
299
295
|
"minimum": 0
|
|
296
|
+
},
|
|
297
|
+
"contextSessionId": {
|
|
298
|
+
"type": "string",
|
|
299
|
+
"description": "Host session identity; adapters supply this for shared MCP connections."
|
|
300
300
|
}
|
|
301
301
|
},
|
|
302
302
|
"required": [
|
|
@@ -340,6 +340,10 @@
|
|
|
340
340
|
},
|
|
341
341
|
"sessionOnly": {
|
|
342
342
|
"type": "boolean"
|
|
343
|
+
},
|
|
344
|
+
"contextSessionId": {
|
|
345
|
+
"type": "string",
|
|
346
|
+
"description": "Host session identity; adapters supply this for shared MCP connections."
|
|
343
347
|
}
|
|
344
348
|
},
|
|
345
349
|
"required": [
|
|
@@ -376,10 +380,6 @@
|
|
|
376
380
|
"project"
|
|
377
381
|
]
|
|
378
382
|
},
|
|
379
|
-
"ttlMs": {
|
|
380
|
-
"type": "integer",
|
|
381
|
-
"minimum": 0
|
|
382
|
-
},
|
|
383
383
|
"timeoutMs": {
|
|
384
384
|
"type": "integer",
|
|
385
385
|
"exclusiveMinimum": 0
|
|
@@ -390,6 +390,10 @@
|
|
|
390
390
|
},
|
|
391
391
|
"browser": {
|
|
392
392
|
"type": "boolean"
|
|
393
|
+
},
|
|
394
|
+
"contextSessionId": {
|
|
395
|
+
"type": "string",
|
|
396
|
+
"description": "Host session identity; adapters supply this for shared MCP connections."
|
|
393
397
|
}
|
|
394
398
|
},
|
|
395
399
|
"required": [
|
|
@@ -408,7 +412,7 @@
|
|
|
408
412
|
},
|
|
409
413
|
{
|
|
410
414
|
"name": "session_resume",
|
|
411
|
-
"description": "Use an explicit opaque session ID for subsequent context operations; historical sessions are not listed.",
|
|
415
|
+
"description": "Use an explicit opaque session ID for subsequent context operations on a dedicated connection; historical sessions are not listed. Shared connections should supply contextSessionId per call instead.",
|
|
412
416
|
"inputSchema": {
|
|
413
417
|
"type": "object",
|
|
414
418
|
"properties": {
|
|
@@ -417,6 +421,10 @@
|
|
|
417
421
|
"minLength": 1,
|
|
418
422
|
"maxLength": 128,
|
|
419
423
|
"pattern": "^[A-Za-z0-9][A-Za-z0-9._~-]{0,127}$"
|
|
424
|
+
},
|
|
425
|
+
"contextSessionId": {
|
|
426
|
+
"type": "string",
|
|
427
|
+
"description": "Host session identity; adapters supply this for shared MCP connections."
|
|
420
428
|
}
|
|
421
429
|
},
|
|
422
430
|
"required": [
|
|
@@ -445,6 +453,10 @@
|
|
|
445
453
|
"input": {
|
|
446
454
|
"type": "object",
|
|
447
455
|
"additionalProperties": {}
|
|
456
|
+
},
|
|
457
|
+
"contextSessionId": {
|
|
458
|
+
"type": "string",
|
|
459
|
+
"description": "Host session identity; adapters supply this for shared MCP connections."
|
|
448
460
|
}
|
|
449
461
|
},
|
|
450
462
|
"required": [
|
|
@@ -467,6 +479,10 @@
|
|
|
467
479
|
"id": {
|
|
468
480
|
"type": "string",
|
|
469
481
|
"format": "uuid"
|
|
482
|
+
},
|
|
483
|
+
"contextSessionId": {
|
|
484
|
+
"type": "string",
|
|
485
|
+
"description": "Host session identity; adapters supply this for shared MCP connections."
|
|
470
486
|
}
|
|
471
487
|
},
|
|
472
488
|
"required": [
|
|
@@ -491,6 +507,10 @@
|
|
|
491
507
|
"id": {
|
|
492
508
|
"type": "string",
|
|
493
509
|
"format": "uuid"
|
|
510
|
+
},
|
|
511
|
+
"contextSessionId": {
|
|
512
|
+
"type": "string",
|
|
513
|
+
"description": "Host session identity; adapters supply this for shared MCP connections."
|
|
494
514
|
}
|
|
495
515
|
},
|
|
496
516
|
"required": [
|
|
@@ -515,6 +535,10 @@
|
|
|
515
535
|
"confirm": {
|
|
516
536
|
"type": "boolean",
|
|
517
537
|
"const": true
|
|
538
|
+
},
|
|
539
|
+
"contextSessionId": {
|
|
540
|
+
"type": "string",
|
|
541
|
+
"description": "Host session identity; adapters supply this for shared MCP connections."
|
|
518
542
|
}
|
|
519
543
|
},
|
|
520
544
|
"required": [
|
|
@@ -535,7 +559,13 @@
|
|
|
535
559
|
"description": "Report local context store counts and location.",
|
|
536
560
|
"inputSchema": {
|
|
537
561
|
"type": "object",
|
|
538
|
-
"properties": {
|
|
562
|
+
"properties": {
|
|
563
|
+
"contextSessionId": {
|
|
564
|
+
"type": "string",
|
|
565
|
+
"description": "Host session identity; adapters supply this for shared MCP connections."
|
|
566
|
+
}
|
|
567
|
+
},
|
|
568
|
+
"additionalProperties": false,
|
|
539
569
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
540
570
|
},
|
|
541
571
|
"annotations": {
|
|
@@ -550,7 +580,13 @@
|
|
|
550
580
|
"description": "Run local read-only Node.js, SQLite FTS5, storage, schema, and fetch-policy checks without network or repair actions.",
|
|
551
581
|
"inputSchema": {
|
|
552
582
|
"type": "object",
|
|
553
|
-
"properties": {
|
|
583
|
+
"properties": {
|
|
584
|
+
"contextSessionId": {
|
|
585
|
+
"type": "string",
|
|
586
|
+
"description": "Host session identity; adapters supply this for shared MCP connections."
|
|
587
|
+
}
|
|
588
|
+
},
|
|
589
|
+
"additionalProperties": false,
|
|
554
590
|
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
555
591
|
},
|
|
556
592
|
"annotations": {
|
|
@@ -583,6 +619,10 @@
|
|
|
583
619
|
},
|
|
584
620
|
"sourceId": {
|
|
585
621
|
"type": "string"
|
|
622
|
+
},
|
|
623
|
+
"contextSessionId": {
|
|
624
|
+
"type": "string",
|
|
625
|
+
"description": "Host session identity; adapters supply this for shared MCP connections."
|
|
586
626
|
}
|
|
587
627
|
},
|
|
588
628
|
"required": [
|
|
@@ -599,7 +639,7 @@
|
|
|
599
639
|
}
|
|
600
640
|
},
|
|
601
641
|
{
|
|
602
|
-
"name": "
|
|
642
|
+
"name": "project_load",
|
|
603
643
|
"description": "Load a bounded documentation map and optional semantic project query.",
|
|
604
644
|
"inputSchema": {
|
|
605
645
|
"type": "object",
|
|
@@ -620,6 +660,10 @@
|
|
|
620
660
|
"type": "integer",
|
|
621
661
|
"minimum": 1,
|
|
622
662
|
"maximum": 5
|
|
663
|
+
},
|
|
664
|
+
"contextSessionId": {
|
|
665
|
+
"type": "string",
|
|
666
|
+
"description": "Host session identity; adapters supply this for shared MCP connections."
|
|
623
667
|
}
|
|
624
668
|
},
|
|
625
669
|
"additionalProperties": false,
|
|
@@ -633,13 +677,17 @@
|
|
|
633
677
|
}
|
|
634
678
|
},
|
|
635
679
|
{
|
|
636
|
-
"name": "
|
|
680
|
+
"name": "embedding_status",
|
|
637
681
|
"description": "Inspect the optional persistent embedding runtime without installing or contacting a registry.",
|
|
638
682
|
"inputSchema": {
|
|
639
683
|
"type": "object",
|
|
640
684
|
"properties": {
|
|
641
685
|
"root": {
|
|
642
686
|
"type": "string"
|
|
687
|
+
},
|
|
688
|
+
"contextSessionId": {
|
|
689
|
+
"type": "string",
|
|
690
|
+
"description": "Host session identity; adapters supply this for shared MCP connections."
|
|
643
691
|
}
|
|
644
692
|
},
|
|
645
693
|
"additionalProperties": false,
|
|
@@ -653,7 +701,7 @@
|
|
|
653
701
|
}
|
|
654
702
|
},
|
|
655
703
|
{
|
|
656
|
-
"name": "
|
|
704
|
+
"name": "embedding_install",
|
|
657
705
|
"description": "After explicit user approval, install the fixed optional embedding runtime persistently. Uses network and dependency install scripts.",
|
|
658
706
|
"inputSchema": {
|
|
659
707
|
"type": "object",
|
|
@@ -664,6 +712,10 @@
|
|
|
664
712
|
"confirm": {
|
|
665
713
|
"type": "boolean",
|
|
666
714
|
"const": true
|
|
715
|
+
},
|
|
716
|
+
"contextSessionId": {
|
|
717
|
+
"type": "string",
|
|
718
|
+
"description": "Host session identity; adapters supply this for shared MCP connections."
|
|
667
719
|
}
|
|
668
720
|
},
|
|
669
721
|
"required": [
|
|
@@ -681,7 +733,7 @@
|
|
|
681
733
|
}
|
|
682
734
|
},
|
|
683
735
|
{
|
|
684
|
-
"name": "
|
|
736
|
+
"name": "project_impact",
|
|
685
737
|
"description": "Run bounded graph impact for up to 20 changed paths.",
|
|
686
738
|
"inputSchema": {
|
|
687
739
|
"type": "object",
|
|
@@ -696,6 +748,10 @@
|
|
|
696
748
|
},
|
|
697
749
|
"minItems": 1,
|
|
698
750
|
"maxItems": 20
|
|
751
|
+
},
|
|
752
|
+
"contextSessionId": {
|
|
753
|
+
"type": "string",
|
|
754
|
+
"description": "Host session identity; adapters supply this for shared MCP connections."
|
|
699
755
|
}
|
|
700
756
|
},
|
|
701
757
|
"required": [
|
|
@@ -712,7 +768,33 @@
|
|
|
712
768
|
}
|
|
713
769
|
},
|
|
714
770
|
{
|
|
715
|
-
"name": "
|
|
771
|
+
"name": "impact_status",
|
|
772
|
+
"description": "Read this host session's advisory pending impact paths. Does not run reviews or clear pending state.",
|
|
773
|
+
"inputSchema": {
|
|
774
|
+
"type": "object",
|
|
775
|
+
"properties": {
|
|
776
|
+
"limit": {
|
|
777
|
+
"type": "integer",
|
|
778
|
+
"minimum": 1,
|
|
779
|
+
"maximum": 50
|
|
780
|
+
},
|
|
781
|
+
"contextSessionId": {
|
|
782
|
+
"type": "string",
|
|
783
|
+
"description": "Host session identity; adapters supply this for shared MCP connections."
|
|
784
|
+
}
|
|
785
|
+
},
|
|
786
|
+
"additionalProperties": false,
|
|
787
|
+
"$schema": "http://json-schema.org/draft-07/schema#"
|
|
788
|
+
},
|
|
789
|
+
"annotations": {
|
|
790
|
+
"readOnlyHint": true
|
|
791
|
+
},
|
|
792
|
+
"execution": {
|
|
793
|
+
"taskSupport": "forbidden"
|
|
794
|
+
}
|
|
795
|
+
},
|
|
796
|
+
{
|
|
797
|
+
"name": "project_initialize",
|
|
716
798
|
"description": "Initialize project memory; dry-run is default and writes require explicit confirmation.",
|
|
717
799
|
"inputSchema": {
|
|
718
800
|
"type": "object",
|
|
@@ -734,6 +816,10 @@
|
|
|
734
816
|
},
|
|
735
817
|
"dotdotSetting": {
|
|
736
818
|
"type": "boolean"
|
|
819
|
+
},
|
|
820
|
+
"contextSessionId": {
|
|
821
|
+
"type": "string",
|
|
822
|
+
"description": "Host session identity; adapters supply this for shared MCP connections."
|
|
737
823
|
}
|
|
738
824
|
},
|
|
739
825
|
"additionalProperties": false,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dotdotgod/hermes",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.7",
|
|
4
4
|
"description": "Hermes CLI and messaging-gateway adapter without Plan Mode.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"publishConfig": {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"devDependencies": {
|
|
14
14
|
"@modelcontextprotocol/sdk": "^1.25.2",
|
|
15
15
|
"esbuild": "0.27.3",
|
|
16
|
-
"@dotdotgod/context": "0.6.
|
|
16
|
+
"@dotdotgod/context": "0.6.7"
|
|
17
17
|
},
|
|
18
18
|
"files": [
|
|
19
19
|
"plugin.yaml",
|
package/plugin.yaml
CHANGED
|
@@ -1,8 +1,40 @@
|
|
|
1
1
|
name: dotdotgod
|
|
2
|
-
version: 0.6.
|
|
2
|
+
version: 0.6.7
|
|
3
3
|
description: Project memory, isolated context tools and impact checks for Hermes CLI and messaging gateway; no Plan Mode.
|
|
4
4
|
author: dotdotgod
|
|
5
5
|
license: Elastic-2.0
|
|
6
|
+
provides_tools:
|
|
7
|
+
- doctor
|
|
8
|
+
- context_heal
|
|
9
|
+
- index
|
|
10
|
+
- purge
|
|
11
|
+
- search
|
|
12
|
+
- session_resume
|
|
13
|
+
- stats
|
|
14
|
+
- embedding_install
|
|
15
|
+
- embedding_status
|
|
16
|
+
- execute
|
|
17
|
+
- execute_file
|
|
18
|
+
- fetch_and_index
|
|
19
|
+
- impact_status
|
|
20
|
+
- ingestion_job_cancel
|
|
21
|
+
- ingestion_job_start
|
|
22
|
+
- ingestion_job_status
|
|
23
|
+
- project_impact
|
|
24
|
+
- project_initialize
|
|
25
|
+
- project_load
|
|
26
|
+
- select_root
|
|
27
|
+
provides_hooks:
|
|
28
|
+
- pre_llm_call
|
|
29
|
+
- pre_tool_call
|
|
30
|
+
- on_session_finalize
|
|
31
|
+
- on_session_reset
|
|
32
|
+
- on_session_end
|
|
33
|
+
provides_skills:
|
|
34
|
+
- project-initializer
|
|
35
|
+
- project-load
|
|
36
|
+
- impact-review
|
|
37
|
+
- document-clarify
|
|
6
38
|
config_schema:
|
|
7
39
|
roots:
|
|
8
40
|
type: dict
|
package/policy.py
CHANGED
|
@@ -55,7 +55,7 @@ def gate(name, args, pending):
|
|
|
55
55
|
return None
|
|
56
56
|
opaque = name.endswith("execute_file") or (name == "process" and args.get("action") in {"write", "submit"})
|
|
57
57
|
if opaque or any(GATE.search(text) for text in commands(name, args)):
|
|
58
|
-
return "Run
|
|
58
|
+
return "Run project_impact for pending paths before verification/commit/push/publish: " + ", ".join(sorted(pending)[:8])
|
|
59
59
|
return None
|
|
60
60
|
|
|
61
61
|
|
package/runtime.py
CHANGED
|
@@ -120,9 +120,9 @@ class Runtime:
|
|
|
120
120
|
|
|
121
121
|
def call_with_session(self, name, args, session):
|
|
122
122
|
with self.lock:
|
|
123
|
-
if name == "
|
|
123
|
+
if name == "select_root":
|
|
124
124
|
return self.select(session, args.get("label"))
|
|
125
|
-
if session.root is None and not session.parent_id and name == "
|
|
125
|
+
if session.root is None and not session.parent_id and name == "project_initialize":
|
|
126
126
|
target = args.get("root")
|
|
127
127
|
if not isinstance(target, str) or not Path(target).is_absolute():
|
|
128
128
|
raise ValueError("Initialization without selection requires an explicit absolute root directory")
|
|
@@ -134,7 +134,7 @@ class Runtime:
|
|
|
134
134
|
return proxy.call(name, {**args, "root": str(root)})
|
|
135
135
|
finally:
|
|
136
136
|
proxy.close()
|
|
137
|
-
if name == "
|
|
137
|
+
if name == "project_load" and args.get("root"):
|
|
138
138
|
base = session.root or self.launch_root
|
|
139
139
|
target = contained(base, args["root"])
|
|
140
140
|
if target != session.root:
|
|
@@ -143,9 +143,9 @@ class Runtime:
|
|
|
143
143
|
session.root = Path(self.ctx.get_config("cli_root", "") or self.launch_root).resolve(strict=True)
|
|
144
144
|
if not session.root.is_dir():
|
|
145
145
|
raise ValueError("Project root must be a directory")
|
|
146
|
-
if name == "
|
|
146
|
+
if name == "impact_status":
|
|
147
147
|
return envelope({"ok": True, "pending": list(self.pending(session))})
|
|
148
|
-
if name == "
|
|
148
|
+
if name == "project_load":
|
|
149
149
|
if contained(session.root, args.get("root") or ".") != session.root:
|
|
150
150
|
self.select(session, str(contained(session.root, args["root"])))
|
|
151
151
|
return self.load(session, args)
|
|
@@ -153,12 +153,12 @@ class Runtime:
|
|
|
153
153
|
reason = self.check(session, name, args)
|
|
154
154
|
if reason:
|
|
155
155
|
raise PermissionError(reason)
|
|
156
|
-
if name == "
|
|
156
|
+
if name == "project_impact":
|
|
157
157
|
before = self.pending(session)
|
|
158
158
|
paths = [os.path.relpath(contained(session.root, path), session.root) for path in args.get("paths", [])]
|
|
159
159
|
args = {**args, "paths": paths}
|
|
160
160
|
value = self.client(session).call(name, args)
|
|
161
|
-
if name == "
|
|
161
|
+
if name == "project_impact" and not value.get("isError") and value.get("structuredContent", {}).get("ok") is True:
|
|
162
162
|
with self.lock:
|
|
163
163
|
after = self.pending(session)
|
|
164
164
|
key = "impact:" + digest(str(session.root))
|
|
@@ -183,7 +183,7 @@ class Runtime:
|
|
|
183
183
|
return None
|
|
184
184
|
if session.root is None:
|
|
185
185
|
return None
|
|
186
|
-
if tool_name == "
|
|
186
|
+
if tool_name == "select_root":
|
|
187
187
|
return None
|
|
188
188
|
reason = self.check(session, tool_name, args)
|
|
189
189
|
if reason:
|
|
@@ -214,7 +214,7 @@ class Runtime:
|
|
|
214
214
|
session.root = Path(self.ctx.get_config("cli_root", "") or self.launch_root).resolve(strict=True)
|
|
215
215
|
if session.root is None:
|
|
216
216
|
labels = list(self.allowed(session))
|
|
217
|
-
context = "dotdotgod is inactive; ordinary host tools remain available. Select a project using
|
|
217
|
+
context = "dotdotgod is inactive; ordinary host tools remain available. Select a project using select_root with a configured label or absolute directory path, or initialize an explicit absolute directory with existing write confirmation. Initialization does not select a project."
|
|
218
218
|
if labels:
|
|
219
219
|
context += " Configured project labels: " + json.dumps(labels)
|
|
220
220
|
return {"context": context}
|
|
@@ -222,7 +222,7 @@ class Runtime:
|
|
|
222
222
|
parts = []
|
|
223
223
|
text = user_message if isinstance(user_message, str) else " ".join(p.get("text", "") for p in user_message if isinstance(p, dict))
|
|
224
224
|
if not session.loaded and not re.search(r"(?:^|\s)/?dd:no-load\b|(?:^|\s)/no-load\b", text):
|
|
225
|
-
parts.append("Call
|
|
225
|
+
parts.append("Call project_load once with an agent-selected focus, then continue the original request. Read AGENTS.md and maintained README indexes selectively.")
|
|
226
226
|
if text.strip():
|
|
227
227
|
try:
|
|
228
228
|
expanded = self.cli(session, ["expand", str(session.root), text, "--json", "--with-impact", "--fuzzy"])
|
|
@@ -233,7 +233,7 @@ class Runtime:
|
|
|
233
233
|
parts.append("Reference expansion unavailable; use README routing and explicit targeted reads.")
|
|
234
234
|
pending = self.pending(session)
|
|
235
235
|
if pending:
|
|
236
|
-
parts.append("Impact pending: " + ", ".join(list(pending)[:8]) + ". Run
|
|
236
|
+
parts.append("Impact pending: " + ", ".join(list(pending)[:8]) + ". Run project_impact before broad tests or release commands.")
|
|
237
237
|
return {"context": "\n\n".join(parts)} if parts else None
|
|
238
238
|
except Exception as error:
|
|
239
239
|
return {"context": "dotdotgod context unavailable: " + str(error) + "; do not bypass root/impact checks."}
|
|
@@ -7,7 +7,7 @@ description: Document Clarify for dotdotgod project memory in Hermes CLI and mes
|
|
|
7
7
|
|
|
8
8
|
# Document Clarify
|
|
9
9
|
|
|
10
|
-
Use the operator-authorized selected repository. Prefer
|
|
10
|
+
Use the operator-authorized selected repository. Prefer project_initialize, project_load and project_impact from the dotdotgod toolset for their respective workflows. Context tools use the shared MCP catalog names without adapter aliases; inspect content, structuredContent and isError. Do not bypass host permissions or pending impact gates. Hermes native delegate_task handles delegation; this adapter has no Plan Mode.
|
|
11
11
|
|
|
12
12
|
## Memory-Area Context
|
|
13
13
|
|
|
@@ -7,7 +7,7 @@ description: Impact Review for dotdotgod project memory in Hermes CLI and messag
|
|
|
7
7
|
|
|
8
8
|
# Impact Review
|
|
9
9
|
|
|
10
|
-
Use the operator-authorized selected repository. Prefer
|
|
10
|
+
Use the operator-authorized selected repository. Prefer project_initialize, project_load and project_impact from the dotdotgod toolset for their respective workflows. Context tools use the shared MCP catalog names without adapter aliases; inspect content, structuredContent and isError. Do not bypass host permissions or pending impact gates. Hermes native delegate_task handles delegation; this adapter has no Plan Mode.
|
|
11
11
|
|
|
12
12
|
## Goal
|
|
13
13
|
|
|
@@ -7,7 +7,7 @@ description: Project Initializer for dotdotgod project memory in Hermes CLI and
|
|
|
7
7
|
|
|
8
8
|
# Project Initializer
|
|
9
9
|
|
|
10
|
-
Use the operator-authorized selected repository. Prefer
|
|
10
|
+
Use the operator-authorized selected repository. Prefer project_initialize, project_load and project_impact from the dotdotgod toolset for their respective workflows. Context tools use the shared MCP catalog names without adapter aliases; inspect content, structuredContent and isError. Do not bypass host permissions or pending impact gates. Hermes native delegate_task handles delegation; this adapter has no Plan Mode.
|
|
11
11
|
|
|
12
12
|
## Goal
|
|
13
13
|
|
|
@@ -7,6 +7,7 @@ Use `AGENTS.md` as the canonical shared instruction file.
|
|
|
7
7
|
- `AGENTS.md`: preferred shared file name. OpenAI Codex recognizes this convention, and the community `agents.md` convention uses the plural form.
|
|
8
8
|
- `CLAUDE.md`: Claude Code's project memory file. Keep it thin and import `AGENTS.md` with `@AGENTS.md`.
|
|
9
9
|
- `CODEX.md`: project-local Codex pointer. Keep it thin and link to `AGENTS.md`.
|
|
10
|
+
- OpenCode reads `AGENTS.md` natively; do not create an `OPENCODE.md` copy.
|
|
10
11
|
- `.github/copilot-instructions.md`: optional Copilot surface. If present, route to `AGENTS.md`, `docs/README.md`, and project commands instead of copying the full rules body.
|
|
11
12
|
- `.cursor/rules/*.md`: optional Cursor path-scoped rules. If present, keep Cursor-specific scoping there and route durable project rules to shared docs.
|
|
12
13
|
- `llms.txt`: optional documentation discovery surface. If present, point to README indexes and bounded docs entrypoints instead of embedding large docs bodies.
|
|
@@ -7,7 +7,7 @@ description: Project Load for dotdotgod project memory in Hermes CLI and messagi
|
|
|
7
7
|
|
|
8
8
|
# Project Load
|
|
9
9
|
|
|
10
|
-
Use the operator-authorized selected repository. Prefer
|
|
10
|
+
Use the operator-authorized selected repository. Prefer project_initialize, project_load and project_impact from the dotdotgod toolset for their respective workflows. Context tools use the shared MCP catalog names without adapter aliases; inspect content, structuredContent and isError. Do not bypass host permissions or pending impact gates. Hermes native delegate_task handles delegation; this adapter has no Plan Mode.
|
|
11
11
|
|
|
12
12
|
## CLI Context
|
|
13
13
|
|