@bcelep/capint 0.6.5 → 0.7.0

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.
Files changed (55) hide show
  1. package/AGENT.md +1 -1
  2. package/CHANGELOG.md +23 -0
  3. package/bin/capint.js +11 -2
  4. package/docs/PRD-capint.md +94 -0
  5. package/docs/PRD-v0.5-agent-capability-activation.md +10 -1
  6. package/docs/architecture-decisions.md +2 -0
  7. package/docs/capint-rehber.md +439 -0
  8. package/docs/capint-stack.md +118 -0
  9. package/docs/community.md +19 -0
  10. package/docs/conventions/daily-use.md +15 -1
  11. package/docs/eval/beginner-test-protocol.md +39 -0
  12. package/docs/eval/survey-template.md +16 -0
  13. package/docs/generated/README.md +6 -0
  14. package/docs/generated/execution-intent.v1.md +211 -0
  15. package/docs/generated/explanation.v1.md +127 -0
  16. package/docs/generated/explanation.v2.md +142 -0
  17. package/docs/generated/ui-api.v1.md +178 -0
  18. package/docs/maintainer-dogfood.md +3 -2
  19. package/docs/recipes/memory-graph-pairing.md +200 -0
  20. package/docs/skill-audit-runbook.md +32 -0
  21. package/locales/en.json +27 -0
  22. package/locales/tr.json +27 -0
  23. package/package.json +4 -2
  24. package/projections/session-start.md +14 -2
  25. package/schemas/execution-intent.v1.json +69 -0
  26. package/schemas/explanation.v2.json +51 -0
  27. package/schemas/ui-api.v1.json +85 -0
  28. package/scripts/generate-schema-docs.mjs +104 -0
  29. package/scripts/release-check.mjs +10 -0
  30. package/skills/prismx-skill-gateway/SKILL.md +10 -3
  31. package/src/commands/doctor.js +9 -0
  32. package/src/commands/feedback.js +29 -0
  33. package/src/commands/init.js +12 -0
  34. package/src/commands/providers.js +54 -0
  35. package/src/commands/skill.js +27 -0
  36. package/src/commands/stack.js +97 -0
  37. package/src/lib/audit.js +9 -1
  38. package/src/lib/contract.js +9 -0
  39. package/src/lib/doctor.js +69 -3
  40. package/src/lib/execution-policy.js +3 -1
  41. package/src/lib/explanation-plain.js +72 -0
  42. package/src/lib/explanation.js +26 -2
  43. package/src/lib/feedback.js +65 -0
  44. package/src/lib/i18n.js +43 -0
  45. package/src/lib/providers/doctor.js +205 -0
  46. package/src/lib/scaffold/index.js +2 -1
  47. package/src/lib/scaffold/presets.js +20 -0
  48. package/src/lib/skill-audit.js +141 -0
  49. package/src/lib/stack/index.js +259 -0
  50. package/src/lib/ui-server.js +92 -5
  51. package/templates/minimal/DONE.md +10 -0
  52. package/templates/minimal/GUNLUK.md +15 -1
  53. package/templates/minimal/docs/conventions/daily-use.md +3 -1
  54. package/ui/app.js +100 -10
  55. package/ui/index.html +22 -1
@@ -0,0 +1,178 @@
1
+ # CapInt UI Wizard API
2
+
3
+ > Auto-generated from `schemas/ui-api.v1.json`. Do not edit by hand.
4
+
5
+ **$id:** `https://capint.dev/schemas/ui-api.v1.json`
6
+
7
+ ## Properties
8
+
9
+ | Field | Type | Required |
10
+ |-------|------|----------|
11
+
12
+ ## Raw schema
13
+
14
+ ```json
15
+ {
16
+ "$schema": "http://json-schema.org/draft-07/schema#",
17
+ "$id": "https://capint.dev/schemas/ui-api.v1.json",
18
+ "title": "CapInt UI Wizard API",
19
+ "definitions": {
20
+ "RouteRequest": {
21
+ "type": "object",
22
+ "required": [
23
+ "task"
24
+ ],
25
+ "properties": {
26
+ "task": {
27
+ "type": "string",
28
+ "minLength": 1
29
+ },
30
+ "locale": {
31
+ "enum": [
32
+ "tr",
33
+ "en"
34
+ ]
35
+ }
36
+ }
37
+ },
38
+ "RouteResponse": {
39
+ "type": "object",
40
+ "required": [
41
+ "result",
42
+ "text_report",
43
+ "chat_copy"
44
+ ],
45
+ "properties": {
46
+ "result": {
47
+ "type": "object",
48
+ "required": [
49
+ "execution_intent"
50
+ ],
51
+ "properties": {
52
+ "execution_intent": {
53
+ "$ref": "execution-intent.v1.json"
54
+ }
55
+ }
56
+ },
57
+ "text_report": {
58
+ "type": "string"
59
+ },
60
+ "chat_copy": {
61
+ "type": "string"
62
+ }
63
+ }
64
+ },
65
+ "HealthResponse": {
66
+ "type": "object",
67
+ "required": [
68
+ "ok",
69
+ "doctor",
70
+ "status"
71
+ ],
72
+ "properties": {
73
+ "ok": {
74
+ "type": "boolean"
75
+ },
76
+ "doctor": {
77
+ "type": "object"
78
+ },
79
+ "status": {
80
+ "type": "object",
81
+ "properties": {
82
+ "skills_on_disk": {
83
+ "type": "number"
84
+ },
85
+ "core_skills": {
86
+ "type": "number"
87
+ },
88
+ "matrix_version": {
89
+ "type": [
90
+ "string",
91
+ "null"
92
+ ]
93
+ },
94
+ "capint_package": {
95
+ "type": "string"
96
+ }
97
+ }
98
+ }
99
+ }
100
+ },
101
+ "RecoverRequest": {
102
+ "type": "object",
103
+ "properties": {
104
+ "apply": {
105
+ "type": "boolean",
106
+ "default": false
107
+ },
108
+ "latest": {
109
+ "type": "boolean",
110
+ "default": true
111
+ }
112
+ }
113
+ },
114
+ "FeedbackRequest": {
115
+ "type": "object",
116
+ "properties": {
117
+ "rating": {
118
+ "type": "integer",
119
+ "minimum": 1,
120
+ "maximum": 5
121
+ },
122
+ "comment": {
123
+ "type": "string",
124
+ "maxLength": 2000
125
+ },
126
+ "source": {
127
+ "type": "string",
128
+ "default": "ui"
129
+ }
130
+ }
131
+ }
132
+ },
133
+ "paths": {
134
+ "/api/health": {
135
+ "get": {
136
+ "response": {
137
+ "$ref": "#/definitions/HealthResponse"
138
+ }
139
+ }
140
+ },
141
+ "/api/route": {
142
+ "post": {
143
+ "request": {
144
+ "$ref": "#/definitions/RouteRequest"
145
+ },
146
+ "response": {
147
+ "$ref": "#/definitions/RouteResponse"
148
+ }
149
+ }
150
+ },
151
+ "/api/recover": {
152
+ "post": {
153
+ "request": {
154
+ "$ref": "#/definitions/RecoverRequest"
155
+ },
156
+ "response": {
157
+ "type": "object"
158
+ }
159
+ }
160
+ },
161
+ "/api/feedback": {
162
+ "post": {
163
+ "request": {
164
+ "$ref": "#/definitions/FeedbackRequest"
165
+ },
166
+ "response": {
167
+ "type": "object",
168
+ "properties": {
169
+ "ok": {
170
+ "type": "boolean"
171
+ }
172
+ }
173
+ }
174
+ }
175
+ }
176
+ }
177
+ }
178
+ ```
@@ -29,7 +29,7 @@ node bin/capint.js ide sync --targets cursor,claude,gemini,antigravity
29
29
  npm link # global `capint` → bu repo
30
30
  ```
31
31
 
32
- Meta: [`.capint/context.json`](../.capint/context.json) · Oturum: [HANDOFF.md](../HANDOFF.md)
32
+ Meta: [`.capint/context.json`](../.capint/context.json) · Oturum: [HANDOFF.md](../HANDOFF.md) · Tamamlanan: [DONE.md](../DONE.md)
33
33
 
34
34
  ---
35
35
 
@@ -46,7 +46,8 @@ npm run release-check
46
46
  node bin/capint.js route --json "debug login"
47
47
  ```
48
48
 
49
- Chat: [GUNLUK.md](../GUNLUK.md) — terminal zorunlu değil; route/doctor debug içindir.
49
+ Chat: [GUNLUK.md](../GUNLUK.md) — terminal zorunlu değil; route/doctor debug içindir.
50
+ Kapanış: `kapan` → agent `DONE.md` + `HANDOFF.md` günceller.
50
51
 
51
52
  ---
52
53
 
@@ -0,0 +1,200 @@
1
+ # Memory & graph pairing (CapInt + sidecars)
2
+
3
+ > **Tek giriş:** [capint-stack.md](../capint-stack.md) — ANWS workflows + graphify + agentmemory + init.
4
+ > Bu dosya katman 3–4 detay/recipe.
5
+
6
+ CapInt **routes and gates** memory/graph usage. It does **not** embed MemPalace, agentmemory, or graphify. Use this recipe to wire optional sidecars.
7
+
8
+ **Architecture:** [architecture-decisions.md](../architecture-decisions.md) — adapters only, default off.
9
+
10
+ ---
11
+
12
+ ## Roles
13
+
14
+ | Tool | Role | CapInt integration |
15
+ |------|------|-------------------|
16
+ | **CapInt local** | HANDOFF, AGENT, design, `context_pack` | Always (Tier 0) |
17
+ | **[graphify](https://github.com/safishamsi/graphify)** | Folder → `GRAPH_REPORT.md` + `graph.json` | File contract (Tier 1) |
18
+ | **[agentmemory](https://github.com/rohitg00/agentmemory)** | Session memory MCP server | Sidecar health (Tier 2) |
19
+ | **[MemPalace](https://github.com/MemPalace/mempalace)** | Python palace + MCP (optional alt) | Optional probe (Tier 3) |
20
+
21
+ CapInt decides **when** (`memory-retrieval`, `CAPINT_MEMORY`, `CAPINT_GRAPH`). Sidecars provide **how**.
22
+
23
+ ---
24
+
25
+ ## Tier 0 — Local (no install)
26
+
27
+ Works today without extra tools.
28
+
29
+ ```bash
30
+ capint route "memory lookup geçen karar"
31
+ # Agent reads HANDOFF.md + context-memory-bridge skill
32
+ ```
33
+
34
+ Optional hot-path file search on route:
35
+
36
+ ```powershell
37
+ $env:CAPINT_LOCAL_CONTEXT="1"
38
+ capint route --json "memory lookup geçen karar"
39
+ # execution_intent.local_adapters populated when flag set
40
+ ```
41
+
42
+ **Check:** `capint providers doctor`
43
+
44
+ ---
45
+
46
+ ## Tier 1 — graphify (file producer)
47
+
48
+ 1. Install graphify (PyPI package name may be `graphifyy`):
49
+
50
+ ```bash
51
+ pipx install graphifyy
52
+ graphify install # skill into Claude/Cursor host
53
+ ```
54
+
55
+ 2. Build graph once per repo (or on major changes):
56
+
57
+ ```bash
58
+ graphify .
59
+ # or: graphify ./src --update
60
+ ```
61
+
62
+ 3. Point CapInt at outputs (pick one layout):
63
+
64
+ **A — repo root (CapInt default paths)**
65
+
66
+ ```text
67
+ GRAPH_REPORT.md
68
+ .capint/graph/graph.json
69
+ ```
70
+
71
+ Copy or symlink from `graphify-out/`:
72
+
73
+ ```powershell
74
+ Copy-Item graphify-out/GRAPH_REPORT.md .
75
+ New-Item -ItemType Directory -Force .capint/graph
76
+ Copy-Item graphify-out/graph.json .capint/graph/graph.json
77
+ ```
78
+
79
+ **B — custom paths via `.capint/providers.json`**
80
+
81
+ ```json
82
+ {
83
+ "graph": {
84
+ "driver": "local",
85
+ "paths": ["graphify-out/GRAPH_REPORT.md", "graphify-out/graph.json"]
86
+ }
87
+ }
88
+ ```
89
+
90
+ 4. Enable local adapters:
91
+
92
+ ```powershell
93
+ $env:CAPINT_LOCAL_CONTEXT="1"
94
+ capint providers doctor
95
+ capint route --json "explain auth module dependencies"
96
+ ```
97
+
98
+ CapInt never runs graphify — it only reads artifacts.
99
+
100
+ ---
101
+
102
+ ## Tier 2 — agentmemory (MCP sidecar)
103
+
104
+ 1. Install and start server:
105
+
106
+ ```bash
107
+ npm install -g @agentmemory/agentmemory
108
+ agentmemory # listens on :3111 by default
109
+ ```
110
+
111
+ 2. Wire Cursor (or your IDE):
112
+
113
+ ```bash
114
+ agentmemory connect cursor
115
+ ```
116
+
117
+ 3. CapInt activation (when route needs memory providers):
118
+
119
+ ```powershell
120
+ $env:CAPINT_MEMORY="1"
121
+ # optional remote:
122
+ # $env:AGENTMEMORY_URL="http://localhost:3111"
123
+ capint route --json "memory lookup geçen karar"
124
+ ```
125
+
126
+ 4. Verify sidecar:
127
+
128
+ ```bash
129
+ capint providers doctor --json
130
+ curl http://localhost:3111/agentmemory/health
131
+ ```
132
+
133
+ **Do not** duplicate agentmemory hooks inside CapInt — let agentmemory capture sessions; CapInt gates routing.
134
+
135
+ **Pairs with graphify:** agentmemory remembers sessions; graphify structures the codebase. See agentmemory [pairings doc](https://github.com/rohitg00/agentmemory/blob/main/docs/recipes/pairings.md).
136
+
137
+ ---
138
+
139
+ ## Tier 3 — MemPalace (optional Python alt)
140
+
141
+ For Python-first teams already using the palace:
142
+
143
+ ```bash
144
+ uv tool install mempalace
145
+ mempalace init ~/projects/myapp
146
+ mempalace mine ~/.claude/projects/ --mode convos
147
+ ```
148
+
149
+ Use MemPalace MCP in the IDE separately. CapInt v0.7.x only **probes** CLI presence in `providers doctor`; full MCP adapter is backlog (0.8.0).
150
+
151
+ **Security:** Official sources only — [github.com/MemPalace/mempalace](https://github.com/MemPalace/mempalace) and [pypi.org/project/mempalace](https://pypi.org/project/mempalace/). Ignore impostor domains.
152
+
153
+ ---
154
+
155
+ ## Env reference
156
+
157
+ | Variable | Effect |
158
+ |----------|--------|
159
+ | `CAPINT_LOCAL_CONTEXT=1` | Attach `local_adapters` on route (file search + graph excerpts) |
160
+ | `CAPINT_MEMORY=1` | Allow memory provider activation (stub until 0.8 adapter) |
161
+ | `CAPINT_GRAPH=1` | Allow graph provider activation |
162
+ | `AGENTMEMORY_URL` | agentmemory server base URL (default `http://localhost:3111`) |
163
+
164
+ Matrix policy: providers default **off** until capability requires memory or flags set — see `provider_activation_policy` in `skill-routing-matrix.json`.
165
+
166
+ ---
167
+
168
+ ## Recommended stack (Cursor + CapInt)
169
+
170
+ ```text
171
+ 1. capint init / dogfood maintainer repo
172
+ 2. graphify . → copy outputs to GRAPH_REPORT.md + .capint/graph/graph.json
173
+ 3. agentmemory (background) + agentmemory connect cursor
174
+ 4. CAPINT_LOCAL_CONTEXT=1 for file adapters on route
175
+ 5. capint providers doctor → green Tier 0 + 1; Tier 2 if server up
176
+ 6. Chat via GUNLUK / capint ui — memory-retrieval tasks route to context-memory-bridge
177
+ ```
178
+
179
+ ---
180
+
181
+ ## Roadmap (CapInt)
182
+
183
+ | Version | Deliverable |
184
+ |---------|-------------|
185
+ | **0.7.x** | This recipe + `capint providers doctor` |
186
+ | **0.8.0** | Real `MemoryProvider` / `GraphProvider` adapters (HTTP/MCP delegate, not stubs) |
187
+ | **0.8.x** | `capint providers.json` template in init; optional `--with-memory-recipe` doc link |
188
+
189
+ ---
190
+
191
+ ## Troubleshooting
192
+
193
+ | Symptom | Fix |
194
+ |---------|-----|
195
+ | `provider_activation.activated: true` but empty results | Stubs in 0.7.x — use Tier 0/1 file paths or wait for 0.8 adapter |
196
+ | Graph excerpts always 0 | Run graphify; ensure `GRAPH_REPORT.md` or `graph.json` exists |
197
+ | agentmemory unreachable | Start server; check `AGENTMEMORY_URL` |
198
+ | Duplicate capture hooks | Use agentmemory OR IDE hooks, not both blindly |
199
+
200
+ **Diagnostic:** `capint providers doctor [--json]`
@@ -0,0 +1,32 @@
1
+ # Skill audit runbook (maintainer)
2
+
3
+ Quarterly checklist for registry bloat and orphan skills.
4
+
5
+ ## Commands
6
+
7
+ ```bash
8
+ npm run skill-audit # JSON report, exit 1 on issue-tier findings
9
+ capint skill audit # human-readable
10
+ capint audit --json # includes skill audit + doctor + contract drift
11
+ ```
12
+
13
+ ## Finding codes
14
+
15
+ | Code | Meaning | Action |
16
+ |------|---------|--------|
17
+ | `orphan_on_disk` | `skills/X/SKILL.md` not in registry | `capint skill pin X` or remove folder |
18
+ | `registry_ghost` | Registry entry missing on disk | Re-init bundle or remove from registry |
19
+ | `matrix_unreferenced` | Optional skill unused in matrix | Archive candidate (info only) |
20
+ | `stale_backup` | Backup older than 90 days | Prune `.capint/backups/` after review |
21
+
22
+ ## Quarterly loop
23
+
24
+ 1. Run `capint skill audit --json` on maintainer repo and one dogfood project.
25
+ 2. Triage `issue` findings first (core ghosts).
26
+ 3. Batch `orphan_on_disk` → pin project-specific skills or delete experiments.
27
+ 4. Document decisions in CHANGELOG if registry tiers change.
28
+ 5. Re-run `npm test` before publish.
29
+
30
+ ## Out of scope (0.7.0)
31
+
32
+ `--archive` dry-run only in docs; physical archive moves planned for 0.7.1.
@@ -0,0 +1,27 @@
1
+ {
2
+ "ui.subtitle": "No terminal — write your task, review the plan, copy to chat.",
3
+ "ui.step.project": "Project",
4
+ "ui.step.task": "Task",
5
+ "ui.step.plan": "Plan",
6
+ "ui.step.chat": "Chat",
7
+ "ui.health.check": "Check",
8
+ "ui.health.checking": "Checking…",
9
+ "ui.health.ok": "✓ Doctor: OK",
10
+ "ui.health.fail": "✗ Doctor: issues found",
11
+ "ui.tooltip.installed": "installed = SKILL.md exists under skills/. It does not need to appear in the IDE skill picker.",
12
+ "ui.plan.why": "Why",
13
+ "ui.plan.technical": "Technical detail",
14
+ "ui.recover.fix": "Suggested fix",
15
+ "ui.recover.apply": "Fix now",
16
+ "ui.recover.confirm": "Restore from the latest backup?",
17
+ "ui.feedback.title": "Was this flow helpful?",
18
+ "ui.feedback.submit": "Send feedback",
19
+ "ui.faq.link": "FAQ / user guide",
20
+ "term.capability": "Capability",
21
+ "term.resolution": "Resolution",
22
+ "term.prd": "PRD = product requirements document",
23
+ "term.installed": "Skill installed on disk (skills/…/SKILL.md)",
24
+ "doctor.summary.registry": "Registry or matrix looks broken; you can restore from the latest backup.",
25
+ "doctor.summary.disabled": "A core skill is disabled; you can re-enable it.",
26
+ "doctor.summary.ok": "Project configuration looks healthy."
27
+ }
@@ -0,0 +1,27 @@
1
+ {
2
+ "ui.subtitle": "Terminal yok — görevini yaz, planı gör, chat'e kopyala.",
3
+ "ui.step.project": "Proje",
4
+ "ui.step.task": "Görev",
5
+ "ui.step.plan": "Plan",
6
+ "ui.step.chat": "Chat",
7
+ "ui.health.check": "Kontrol et",
8
+ "ui.health.checking": "Kontrol ediliyor…",
9
+ "ui.health.ok": "✓ Doctor: OK",
10
+ "ui.health.fail": "✗ Doctor: sorun var",
11
+ "ui.tooltip.installed": "installed = skills/ klasöründe SKILL.md var. Cursor skill listesinde görünmesi gerekmez.",
12
+ "ui.plan.why": "Neden",
13
+ "ui.plan.technical": "Teknik detay",
14
+ "ui.recover.fix": "Önerilen düzeltme",
15
+ "ui.recover.apply": "Düzelt",
16
+ "ui.recover.confirm": "Son yedeği geri yüklemek istiyor musun?",
17
+ "ui.feedback.title": "Bu akış işine yaradı mı?",
18
+ "ui.feedback.submit": "Geri bildirim gönder",
19
+ "ui.faq.link": "SSS / kullanım kılavuzu",
20
+ "term.capability": "Capability",
21
+ "term.resolution": "Resolution",
22
+ "term.prd": "PRD = ürün gereksinim belgesi",
23
+ "term.installed": "Skill diskte yüklü (skills/…/SKILL.md)",
24
+ "doctor.summary.registry": "Registry veya matrix bozuk görünüyor; son yedekten geri yükleyebilirsin.",
25
+ "doctor.summary.disabled": "Bir core skill kapalı; yeniden açabilirsin.",
26
+ "doctor.summary.ok": "Proje yapılandırması sağlıklı görünüyor."
27
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bcelep/capint",
3
- "version": "0.6.5",
3
+ "version": "0.7.0",
4
4
  "description": "Capability-first orchestration engine for IDE agents",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -18,6 +18,7 @@
18
18
  "skill-routing-matrix.json",
19
19
  "registry.json",
20
20
  "schemas/",
21
+ "locales/",
21
22
  "ui/",
22
23
  "README.md",
23
24
  "CHANGELOG.md",
@@ -30,7 +31,8 @@
30
31
  "test:unit": "node tests/contract-snapshot.test.mjs",
31
32
  "test:e2e": "node tests/ui-wizard.e2e.mjs",
32
33
  "validate": "node scripts/validate-matrix.mjs",
33
- "release-check": "node scripts/release-check.mjs"
34
+ "release-check": "node scripts/release-check.mjs",
35
+ "skill-audit": "node bin/capint.js skill audit --json"
34
36
  },
35
37
  "devDependencies": {
36
38
  "ajv": "^8.17.1",
@@ -8,7 +8,7 @@ description: "CapInt session start + Execution Intent — projected via capint i
8
8
 
9
9
  Every **new conversation**, before editing files:
10
10
 
11
- 1. Read root `GUNLUK.md` (daily use) + `AGENT.md` + `design.md` (+ `HANDOFF.md` if present).
11
+ 1. Read root `GUNLUK.md` (daily use) + `AGENT.md` + `design.md` (+ `HANDOFF.md` if present). Skim `DONE.md` if scope might repeat past work.
12
12
  2. Read `skills/prismx-skill-gateway/SKILL.md` before medium+ code edits.
13
13
  3. Keep startup output short (2–5 lines).
14
14
 
@@ -23,7 +23,7 @@ When the user assigns work:
23
23
  - `Resolution: provider/resource`
24
24
  - `Memory: none|optional|required`
25
25
  - `Plan: auto|confirm|override`
26
- 3. **Explanation Card (medium+):** before apply, show up to 8 lines — why, task type, keywords, files to read (`explanation` block or `capint route --verbose`).
26
+ 3. **Explanation Card (medium+):** before apply, show up to 8 lines — **`reason_plain` first** (business language), then technical `reason_summary`; task type, keywords, files to read (`explanation` block or `capint route --verbose`).
27
27
  4. **Confirm (adaptive):** light → apply after Intent (`Plan: auto`); medium/heavy → one short Turkish question — accept devam/plan/analiz (tokens optional):
28
28
  - devam / yap / evet → apply
29
29
  - plan / planla / önce plan → short plan first
@@ -35,6 +35,18 @@ When the user assigns work:
35
35
  # Paths
36
36
 
37
37
  - Session: `AGENT.md`
38
+ - Active handoff: `HANDOFF.md` (if present)
39
+ - Completed log: `DONE.md` (append-only)
38
40
  - Gateway: `skills/prismx-skill-gateway/SKILL.md`
39
41
  - Matrix: `skill-routing-matrix.json`
40
42
  - CLI preview: `capint route "<task>"`
43
+
44
+ # Session end
45
+
46
+ When the user closes a session (`kapan`, `oturumu bitir`, `HANDOFF güncelle`, `DONE kaydet`):
47
+
48
+ 1. **Append** one row to `DONE.md` — date, short summary, verification (e.g. `npm test`, `capint doctor`).
49
+ 2. **Rewrite** `HANDOFF.md` — where we left off, next 3 steps, blockers (active context only).
50
+ 3. If code changed: note whether `npm test` / release-check was green.
51
+ 4. Keep startup output short; do not duplicate full chat history in either file.
52
+
@@ -0,0 +1,69 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://capint.dev/schemas/execution-intent.v1.json",
4
+ "title": "CapInt Execution Intent",
5
+ "type": "object",
6
+ "required": [
7
+ "intent",
8
+ "capability",
9
+ "resolution",
10
+ "memory",
11
+ "plan",
12
+ "confirm",
13
+ "confirm_question",
14
+ "confirm_options",
15
+ "confirm_default_option",
16
+ "fallback"
17
+ ],
18
+ "properties": {
19
+ "intent": { "type": "string" },
20
+ "capability": { "type": "string" },
21
+ "resolution": { "type": "string" },
22
+ "memory": { "enum": ["none", "optional", "required"] },
23
+ "plan": { "enum": ["auto", "confirm", "override"] },
24
+ "confirm": {
25
+ "type": "object",
26
+ "properties": {
27
+ "enabled": { "type": "boolean" },
28
+ "mode": { "type": "string" },
29
+ "prompt": { "type": ["string", "null"] },
30
+ "options": { "type": "array" },
31
+ "default_option": { "type": ["string", "null"] }
32
+ }
33
+ },
34
+ "confirm_question": { "type": ["string", "null"] },
35
+ "confirm_options": {
36
+ "type": "array",
37
+ "items": {
38
+ "type": "object",
39
+ "required": ["id", "label"],
40
+ "properties": {
41
+ "id": { "type": "string" },
42
+ "label": { "type": "string" }
43
+ }
44
+ }
45
+ },
46
+ "confirm_default_option": { "type": ["string", "null"] },
47
+ "fallback": { "type": ["object", "null"] },
48
+ "verification_required": { "type": "boolean" },
49
+ "verification_hints": { "type": "array", "items": { "type": "string" } },
50
+ "verification_profile": { "type": "string" },
51
+ "route_explain": { "type": "object" },
52
+ "explanation": { "$ref": "explanation.v2.json" },
53
+ "provider_activation": { "type": ["object", "null"] },
54
+ "context_pack": { "type": ["object", "null"] },
55
+ "orchestration": { "type": ["object", "null"] },
56
+ "resolution_status": { "type": "string" },
57
+ "resolution_hint": { "type": "string" },
58
+ "workspace_boundary": {
59
+ "type": "object",
60
+ "properties": {
61
+ "violated": { "type": "boolean" },
62
+ "suspicious_paths": { "type": "array", "items": { "type": "string" } },
63
+ "override_hint": { "type": ["string", "null"] }
64
+ }
65
+ },
66
+ "overlay_error": { "type": "string" },
67
+ "local_adapters": { "type": "object" }
68
+ }
69
+ }
@@ -0,0 +1,51 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://capint.dev/schemas/explanation.v2.json",
4
+ "title": "CapInt Route Explanation v2",
5
+ "type": "object",
6
+ "required": [
7
+ "task_type_id",
8
+ "matched_keywords",
9
+ "winner",
10
+ "files_to_read",
11
+ "reason_summary",
12
+ "alternatives_considered"
13
+ ],
14
+ "properties": {
15
+ "task_type_id": { "type": ["string", "null"] },
16
+ "matched_keywords": { "type": "array", "items": { "type": "string" } },
17
+ "winner": {
18
+ "type": ["object", "null"],
19
+ "properties": {
20
+ "type": { "type": "string" },
21
+ "resource": { "type": "string" }
22
+ }
23
+ },
24
+ "files_to_read": { "type": "array", "items": { "type": "string" } },
25
+ "reason_summary": { "type": "string" },
26
+ "reason_plain": { "type": "string" },
27
+ "tooltip": { "type": "string" },
28
+ "locale": { "enum": ["tr", "en"] },
29
+ "alternatives_considered": {
30
+ "type": "array",
31
+ "items": {
32
+ "type": "object",
33
+ "properties": {
34
+ "resource": { "type": "string" },
35
+ "type": { "type": "string" },
36
+ "confidence": { "type": ["number", "null"] }
37
+ }
38
+ }
39
+ },
40
+ "resolver_order": { "type": "array", "items": { "type": "string" } },
41
+ "files_intended": { "type": "array", "items": { "type": "string" } },
42
+ "workspace_boundary": {
43
+ "type": "object",
44
+ "properties": {
45
+ "violated": { "type": "boolean" },
46
+ "suspicious_paths": { "type": "array", "items": { "type": "string" } },
47
+ "override_hint": { "type": ["string", "null"] }
48
+ }
49
+ }
50
+ }
51
+ }