@amoree-code/ocean 0.0.0-stage → 1.2.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.
- package/LICENSE +21 -0
- package/README.md +284 -2
- package/dist/application/auth/auth-orchestrator.js +77 -0
- package/dist/application/clients/clients.js +646 -0
- package/dist/application/clients/editors.js +398 -0
- package/dist/application/clients/hooks.js +335 -0
- package/dist/application/clients/native.js +410 -0
- package/dist/application/clients/opencode-plugin.js +158 -0
- package/dist/application/clients/registry.js +188 -0
- package/dist/application/gateway/webhook-gateway.js +137 -0
- package/dist/application/install/provider-installer.js +184 -0
- package/dist/application/integrations/charter-copies.js +76 -0
- package/dist/application/integrations/claude-vscode.js +106 -0
- package/dist/application/integrations/engine-entry-repair.js +105 -0
- package/dist/application/integrations/skill-filter.js +254 -0
- package/dist/application/layout/layout-apply.js +443 -0
- package/dist/application/layout/layout-plan.js +236 -0
- package/dist/application/layout/workspace-template.js +34 -0
- package/dist/application/onboarding/state.js +23 -0
- package/dist/application/onboarding/steps.js +249 -0
- package/dist/application/profiles/profile-distribution.js +53 -0
- package/dist/application/profiles/profile-suggestion.js +39 -0
- package/dist/application/profiles/profile-upgrade-service.js +208 -0
- package/dist/application/pull/history-index.js +476 -0
- package/dist/application/pull/project-match.js +132 -0
- package/dist/application/pull/pull.js +202 -0
- package/dist/application/pull/server-capture.js +307 -0
- package/dist/application/scheduler/local-scheduler.js +210 -0
- package/dist/composition/runtime.js +64 -0
- package/dist/engine-root.js +9 -0
- package/dist/infrastructure/filesystem/profile-loader.js +46 -0
- package/dist/infrastructure/filesystem/runtime-config-loader.js +29 -0
- package/dist/infrastructure/filesystem/skill-loader.js +84 -0
- package/dist/infrastructure/filesystem/workspace-capability.js +37 -0
- package/dist/infrastructure/observability/runtime-logger.js +16 -0
- package/dist/infrastructure/process/agent-tool-executor.js +99 -0
- package/dist/infrastructure/process/cli-process.js +49 -0
- package/dist/infrastructure/process/interactive-process.js +145 -0
- package/dist/infrastructure/process/process-supervisor.js +194 -0
- package/dist/infrastructure/process/service.js +252 -0
- package/dist/infrastructure/providers/browser-provider.js +2 -0
- package/dist/infrastructure/providers/claude-sdk.js +137 -0
- package/dist/infrastructure/providers/client-home.js +14 -0
- package/dist/infrastructure/providers/fake-browser-provider.js +146 -0
- package/dist/infrastructure/providers/ollama-embedder.js +74 -0
- package/dist/infrastructure/providers/openai-compatible.js +268 -0
- package/dist/infrastructure/providers/playwright-browser-provider.js +380 -0
- package/dist/infrastructure/providers/provider-capabilities.js +50 -0
- package/dist/infrastructure/providers/provider-invocation.js +184 -0
- package/dist/infrastructure/providers/provider-registry.js +77 -0
- package/dist/infrastructure/providers/providers.js +134 -0
- package/dist/infrastructure/wrappers/wrapper-manager.js +374 -0
- package/dist/interfaces/cli/auth-command.js +54 -0
- package/dist/interfaces/cli/browser-bridge-command.js +93 -0
- package/dist/interfaces/cli/browser-command.js +119 -0
- package/dist/interfaces/cli/capture-command.js +125 -0
- package/dist/interfaces/cli/client-test-command.js +133 -0
- package/dist/interfaces/cli/clients-command.js +129 -0
- package/dist/interfaces/cli/command-registry.js +1211 -0
- package/dist/interfaces/cli/context-command.js +172 -0
- package/dist/interfaces/cli/daily-command.js +131 -0
- package/dist/interfaces/cli/governance-command.js +55 -0
- package/dist/interfaces/cli/handoff-command.js +35 -0
- package/dist/interfaces/cli/help-command.js +207 -0
- package/dist/interfaces/cli/idea-command.js +47 -0
- package/dist/interfaces/cli/intercept-command.js +317 -0
- package/dist/interfaces/cli/layout-command.js +27 -0
- package/dist/interfaces/cli/market-command.js +52 -0
- package/dist/interfaces/cli/mcp-gateway-command.js +30 -0
- package/dist/interfaces/cli/memory-command.js +317 -0
- package/dist/interfaces/cli/migrate-command.js +26 -0
- package/dist/interfaces/cli/observe-command.js +78 -0
- package/dist/interfaces/cli/onboard-command.js +123 -0
- package/dist/interfaces/cli/operate-command.js +59 -0
- package/dist/interfaces/cli/profiles-command.js +70 -0
- package/dist/interfaces/cli/pull-command.js +54 -0
- package/dist/interfaces/cli/setup-command.js +143 -0
- package/dist/interfaces/cli/tasks-command.js +249 -0
- package/dist/main.js +49 -0
- package/dist/node-warnings.js +17 -0
- package/dist/version.js +8 -0
- package/market/mcp/chrome-devtools/ocean.capability.json +28 -0
- package/market/mcp/gateway/ocean.capability.json +21 -0
- package/market/mcp/obsidian/ocean.capability.json +21 -0
- package/market/mcp/ocean/ocean.capability.json +21 -0
- package/market/mcp/playwright/ocean.capability.json +23 -0
- package/node_modules/@ocean/brain/dist/brain/brain-eval.js +29 -0
- package/node_modules/@ocean/brain/dist/brain/brain-markdown.js +226 -0
- package/node_modules/@ocean/brain/dist/brain/brain-reindex.js +247 -0
- package/node_modules/@ocean/brain/dist/brain/brain-service.js +320 -0
- package/node_modules/@ocean/brain/dist/capture/inbox-sync.js +22 -0
- package/node_modules/@ocean/brain/dist/evidence/verification-report.js +13 -0
- package/node_modules/@ocean/brain/dist/infrastructure/brain/brain-index.js +285 -0
- package/node_modules/@ocean/brain/dist/memory/brain-dump.js +145 -0
- package/node_modules/@ocean/brain/dist/memory/daily-narrative.js +142 -0
- package/node_modules/@ocean/brain/dist/memory/index-sync.js +124 -0
- package/node_modules/@ocean/brain/dist/memory/lesson-activation.js +93 -0
- package/node_modules/@ocean/brain/dist/memory/lesson-learning.js +188 -0
- package/node_modules/@ocean/brain/dist/memory/lessons.js +321 -0
- package/node_modules/@ocean/brain/dist/memory/memory-audit.js +100 -0
- package/node_modules/@ocean/brain/dist/memory/memory-digest.js +49 -0
- package/node_modules/@ocean/brain/dist/memory/memory-harvest.js +345 -0
- package/node_modules/@ocean/brain/dist/memory/memory-paths.js +174 -0
- package/node_modules/@ocean/brain/dist/memory/memory-review.js +278 -0
- package/node_modules/@ocean/brain/dist/memory/memory-trash.js +152 -0
- package/node_modules/@ocean/brain/dist/memory/memory-write.js +216 -0
- package/node_modules/@ocean/brain/dist/memory/model-narrative.js +129 -0
- package/node_modules/@ocean/brain/dist/memory/profile-facts.js +103 -0
- package/node_modules/@ocean/brain/dist/memory/session-promotion.js +61 -0
- package/node_modules/@ocean/brain/dist/memory/session-summary.js +113 -0
- package/node_modules/@ocean/brain/package.json +11 -0
- package/node_modules/@ocean/context/dist/context/context-compression.js +66 -0
- package/node_modules/@ocean/context/dist/context/context-cost.js +587 -0
- package/node_modules/@ocean/context/dist/context/context-ladder.js +363 -0
- package/node_modules/@ocean/context/dist/context/context-packet.js +213 -0
- package/node_modules/@ocean/context/dist/context/context-references.js +255 -0
- package/node_modules/@ocean/context/dist/context/intent-router.js +259 -0
- package/node_modules/@ocean/context/dist/context/resource-injection.js +36 -0
- package/node_modules/@ocean/context/package.json +11 -0
- package/node_modules/@ocean/core/dist/domain/brain/brain-record.js +22 -0
- package/node_modules/@ocean/core/dist/domain/brain/record-scope.js +22 -0
- package/node_modules/@ocean/core/dist/domain/capabilities/browser-contract.js +64 -0
- package/node_modules/@ocean/core/dist/domain/capabilities/capability-contract.js +16 -0
- package/node_modules/@ocean/core/dist/domain/capabilities/capability-manifest.js +72 -0
- package/node_modules/@ocean/core/dist/domain/context/context-validator.js +5 -0
- package/node_modules/@ocean/core/dist/domain/context/context.js +34 -0
- package/node_modules/@ocean/core/dist/domain/context/project-id.js +30 -0
- package/node_modules/@ocean/core/dist/domain/evidence/evidence.js +16 -0
- package/node_modules/@ocean/core/dist/domain/mcp/mcp-contract.js +36 -0
- package/node_modules/@ocean/core/dist/domain/mcp/memory-contract.js +41 -0
- package/node_modules/@ocean/core/dist/domain/ports/brain-index-port.js +7 -0
- package/node_modules/@ocean/core/dist/domain/ports/browser-port.js +8 -0
- package/node_modules/@ocean/core/dist/domain/ports/embedder-port.js +2 -0
- package/node_modules/@ocean/core/dist/domain/ports/platform-ports.js +2 -0
- package/node_modules/@ocean/core/dist/domain/ports/runtime-ports.js +2 -0
- package/node_modules/@ocean/core/dist/domain/ports/session-store-port.js +2 -0
- package/node_modules/@ocean/core/dist/domain/process/process-events.js +5 -0
- package/node_modules/@ocean/core/dist/domain/profiles/profile-distribution.js +19 -0
- package/node_modules/@ocean/core/dist/domain/profiles/profile-policy.js +34 -0
- package/node_modules/@ocean/core/dist/domain/profiles/profile-selection.js +73 -0
- package/node_modules/@ocean/core/dist/domain/profiles/profile-upgrade.js +123 -0
- package/node_modules/@ocean/core/dist/domain/profiles/profile-validator.js +5 -0
- package/node_modules/@ocean/core/dist/domain/profiles/profile.js +218 -0
- package/node_modules/@ocean/core/dist/domain/profiles/runtime-config.js +30 -0
- package/node_modules/@ocean/core/dist/domain/providers/provider-capability.js +28 -0
- package/node_modules/@ocean/core/dist/domain/providers/provider.js +2 -0
- package/node_modules/@ocean/core/dist/domain/redaction/redaction.js +86 -0
- package/node_modules/@ocean/core/dist/domain/runs/agent-tools.js +92 -0
- package/node_modules/@ocean/core/dist/domain/runs/execution-plan.js +71 -0
- package/node_modules/@ocean/core/dist/domain/runs/run-contract.js +38 -0
- package/node_modules/@ocean/core/dist/domain/sessions/entry-contract.js +31 -0
- package/node_modules/@ocean/core/dist/domain/sessions/handoff.js +78 -0
- package/node_modules/@ocean/core/dist/domain/sessions/session.js +58 -0
- package/node_modules/@ocean/core/dist/domain/skills/default-skills.js +29 -0
- package/node_modules/@ocean/core/dist/domain/skills/skill-validator.js +5 -0
- package/node_modules/@ocean/core/dist/domain/skills/skill.js +11 -0
- package/node_modules/@ocean/core/dist/domain/tasks/task-id.js +85 -0
- package/node_modules/@ocean/core/dist/shared/fs-utils.js +212 -0
- package/node_modules/@ocean/core/dist/shared/local-date.js +16 -0
- package/node_modules/@ocean/core/dist/shared/paths.js +324 -0
- package/node_modules/@ocean/core/dist/shared/project-resolution.js +1065 -0
- package/node_modules/@ocean/core/dist/shared/task-reference.js +133 -0
- package/node_modules/@ocean/core/package.json +14 -0
- package/node_modules/@ocean/loop/dist/handoff/handoff-service.js +133 -0
- package/node_modules/@ocean/loop/dist/hooks/lifecycle-hooks.js +15 -0
- package/node_modules/@ocean/loop/dist/hooks/session-end-hook.js +183 -0
- package/node_modules/@ocean/loop/dist/hooks/session-start-hook.js +237 -0
- package/node_modules/@ocean/loop/dist/infrastructure/persistence/session-store.js +690 -0
- package/node_modules/@ocean/loop/dist/infrastructure/persistence/session-validator.js +5 -0
- package/node_modules/@ocean/loop/dist/loops/iteration-graph.js +147 -0
- package/node_modules/@ocean/loop/dist/loops/task-loop-record.js +2 -0
- package/node_modules/@ocean/loop/dist/loops/task-loop.js +281 -0
- package/node_modules/@ocean/loop/dist/operations/memory-knowledge-operations.js +263 -0
- package/node_modules/@ocean/loop/dist/operations/operation-contract.js +227 -0
- package/node_modules/@ocean/loop/dist/operations/operation-scope.js +28 -0
- package/node_modules/@ocean/loop/dist/operations/project-operations.js +93 -0
- package/node_modules/@ocean/loop/dist/operations/record-io.js +65 -0
- package/node_modules/@ocean/loop/dist/operations/record-operations.js +45 -0
- package/node_modules/@ocean/loop/dist/operations/task-linker.js +40 -0
- package/node_modules/@ocean/loop/dist/operations/task-operations.js +279 -0
- package/node_modules/@ocean/loop/dist/operations/write-guard.js +157 -0
- package/node_modules/@ocean/loop/dist/runs/prompt-assembly.js +112 -0
- package/node_modules/@ocean/loop/dist/runs/run-agent.js +425 -0
- package/node_modules/@ocean/loop/dist/runs/run-authorization.js +24 -0
- package/node_modules/@ocean/loop/dist/runs/tool-loop.js +173 -0
- package/node_modules/@ocean/loop/dist/sessions/session-closeout.js +150 -0
- package/node_modules/@ocean/loop/dist/sessions/session-pointer.js +133 -0
- package/node_modules/@ocean/loop/dist/sessions/session-projects.js +26 -0
- package/node_modules/@ocean/loop/dist/sessions/session-retention.js +132 -0
- package/node_modules/@ocean/loop/dist/tasks/archive-tasks.js +210 -0
- package/node_modules/@ocean/loop/dist/tasks/checkpoint-task.js +31 -0
- package/node_modules/@ocean/loop/dist/tasks/claim-task.js +126 -0
- package/node_modules/@ocean/loop/dist/tasks/list-tasks.js +113 -0
- package/node_modules/@ocean/loop/dist/tasks/new-task.js +42 -0
- package/node_modules/@ocean/loop/dist/tasks/renumber-tasks.js +134 -0
- package/node_modules/@ocean/loop/dist/tasks/verification-readiness.js +78 -0
- package/node_modules/@ocean/loop/dist/tasks/verify-task.js +234 -0
- package/node_modules/@ocean/loop/package.json +11 -0
- package/node_modules/@ocean/market/dist/adapters/mcp-adapter.js +64 -0
- package/node_modules/@ocean/market/dist/adapters/owned-directory.js +89 -0
- package/node_modules/@ocean/market/dist/adapters/plugin-adapter.js +39 -0
- package/node_modules/@ocean/market/dist/adapters/skill-adapter.js +32 -0
- package/node_modules/@ocean/market/dist/capability/adapter.js +2 -0
- package/node_modules/@ocean/market/dist/capability/catalog.js +63 -0
- package/node_modules/@ocean/market/dist/capability/content-digest.js +40 -0
- package/node_modules/@ocean/market/dist/capability/registry.js +81 -0
- package/node_modules/@ocean/market/dist/install/default-marketplace.js +47 -0
- package/node_modules/@ocean/market/dist/install/lock.js +34 -0
- package/node_modules/@ocean/market/dist/install/marketplace-service.js +165 -0
- package/node_modules/@ocean/market/dist/mcp/browser-bridge.js +263 -0
- package/node_modules/@ocean/market/dist/mcp/mcp-connection.js +67 -0
- package/node_modules/@ocean/market/dist/mcp/mcp-gateway.js +317 -0
- package/node_modules/@ocean/market/dist/mcp/mcp-launch.js +102 -0
- package/node_modules/@ocean/market/dist/mcp/mcp-runner.js +32 -0
- package/node_modules/@ocean/market/dist/security/description-scan.js +45 -0
- package/node_modules/@ocean/market/dist/security/permissions.js +57 -0
- package/node_modules/@ocean/market/dist/skills/core-skill-sync.js +113 -0
- package/node_modules/@ocean/market/dist/skills/signal-detection.js +84 -0
- package/node_modules/@ocean/market/dist/skills/skill-hub.js +220 -0
- package/node_modules/@ocean/market/package.json +11 -0
- package/node_modules/@ocean/services/dist/browser/browser-service.js +124 -0
- package/node_modules/@ocean/services/dist/browser/browser-session.js +287 -0
- package/node_modules/@ocean/services/dist/browser/browser-task-runner.js +70 -0
- package/node_modules/@ocean/services/dist/doctor/workspace-doctor.js +547 -0
- package/node_modules/@ocean/services/dist/infrastructure/mcp/call-ledger.js +114 -0
- package/node_modules/@ocean/services/dist/infrastructure/mcp/mcp-client.js +162 -0
- package/node_modules/@ocean/services/dist/infrastructure/mcp/obsidian-server.js +251 -0
- package/node_modules/@ocean/services/dist/infrastructure/mcp/ocean-server.js +880 -0
- package/node_modules/@ocean/services/dist/infrastructure/mcp/server-version.js +20 -0
- package/node_modules/@ocean/services/dist/infrastructure/mcp/tool-registry.js +29 -0
- package/node_modules/@ocean/services/dist/obsidian/conflict-log.js +68 -0
- package/node_modules/@ocean/services/dist/obsidian/inbox-promotion.js +80 -0
- package/node_modules/@ocean/services/dist/obsidian/vault-discovery.js +113 -0
- package/node_modules/@ocean/services/dist/obsidian/vault-ingestion.js +77 -0
- package/node_modules/@ocean/services/dist/obsidian/vault-sync.js +73 -0
- package/node_modules/@ocean/services/dist/obsidian/vault-writer.js +75 -0
- package/node_modules/@ocean/services/package.json +11 -0
- package/ocean-marketplace.json +415 -0
- package/package.json +67 -4
- package/skills/core/business-logic/SKILL.md +22 -0
- package/skills/core/catch-up/SKILL.md +17 -0
- package/skills/core/core-thinking/SKILL.md +11 -0
- package/skills/core/design-thinking/SKILL.md +19 -0
- package/skills/core/graft/SKILL.md +156 -0
- package/skills/core/loop/SKILL.md +20 -0
- package/skills/core/session-handoff/SKILL.md +15 -0
- package/skills/core/use-browser/SKILL.md +69 -0
- package/skills/core/verification/SKILL.md +11 -0
- package/skills/index.json +56 -0
- package/templates/README.md +4 -0
- package/templates/profiles/default.json +51 -0
- package/templates/profiles/developer.json +51 -0
- package/templates/profiles/reviewer.json +51 -0
- package/templates/profiles/strategist.json +51 -0
- package/templates/workspace/00-inbox/INBOX.md +7 -0
- package/templates/workspace/00-inbox/candidates/.gitkeep +0 -0
- package/templates/workspace/00-inbox/native/.gitkeep +0 -0
- package/templates/workspace/01-daily/.gitkeep +0 -0
- package/templates/workspace/02-personal/CONFLICTS.md +7 -0
- package/templates/workspace/02-personal/MEMORY.md +15 -0
- package/templates/workspace/02-personal/goals/.gitkeep +0 -0
- package/templates/workspace/02-personal/identity/.gitkeep +0 -0
- package/templates/workspace/02-personal/preferences/.gitkeep +0 -0
- package/templates/workspace/03-professional/.gitkeep +0 -0
- package/templates/workspace/04-projects/PROJECTS.md +5 -0
- package/templates/workspace/04-projects/_template/docs/.gitkeep +0 -0
- package/templates/workspace/04-projects/_template/memory/.gitkeep +0 -0
- package/templates/workspace/04-projects/_template/tasks/.gitkeep +0 -0
- package/templates/workspace/05-knowledge/KNOWLEDGE.md +8 -0
- package/templates/workspace/05-knowledge/decisions/.gitkeep +0 -0
- package/templates/workspace/05-knowledge/lessons/.gitkeep +0 -0
- package/templates/workspace/06-templates/TEMPLATES.md +25 -0
- package/templates/workspace/06-templates/decision.md +8 -0
- package/templates/workspace/06-templates/intelligence.md +32 -0
- package/templates/workspace/06-templates/project-claude.md +48 -0
- package/templates/workspace/06-templates/session.md +38 -0
- package/templates/workspace/06-templates/task.md +42 -0
- package/templates/workspace/MANIFEST.json +51 -0
- package/templates/workspace/bridge/config/CONFIG.md +21 -0
- package/templates/workspace/bridge/config/runtime.json +4 -0
- package/templates/workspace/charter/core.md +104 -0
- package/templates/workspace/charter/policies/README.md +31 -0
- package/templates/workspace/charter/policies/claude-code-context.md +90 -0
- package/templates/workspace/charter/policies/concise-output.md +29 -0
- package/templates/workspace/charter/policies/context.md +91 -0
- package/templates/workspace/charter/policies/contracts/task.md +189 -0
- package/templates/workspace/charter/policies/git.md +60 -0
- package/templates/workspace/charter/policies/graph.md +47 -0
- package/templates/workspace/charter/policies/knowledge.md +33 -0
- package/templates/workspace/charter/policies/lifecycle.md +119 -0
- package/templates/workspace/charter/policies/memory.md +67 -0
- package/templates/workspace/charter/policies/minimal-change.md +43 -0
- package/templates/workspace/charter/policies/models.md +57 -0
- package/templates/workspace/charter/policies/privacy-terms.txt +3 -0
- package/templates/workspace/charter/policies/response.md +39 -0
- package/templates/workspace/charter/policies/skill-observer.md +44 -0
- package/templates/workspace/charter/policies/stack.md +23 -0
- package/templates/workspace/charter/policies/task.md +139 -0
- package/templates/workspace/charter/policies/verification.md +29 -0
- package/templates/workspace/sessions/.gitkeep +0 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: graft
|
|
3
|
+
description: This repo is indexed by graft/. For ANY task here, whether
|
|
4
|
+
understanding how something works, finding where code lives, tracing what
|
|
5
|
+
calls a symbol or what a change breaks, or scoping an edit, get your context
|
|
6
|
+
from graft before grepping or reading source files.
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# graft
|
|
10
|
+
|
|
11
|
+
`graft/` holds a graph of this repo: small markdown nodes that each explain one
|
|
12
|
+
part in prose and name the exact `file:line` spans they cover, plus a wiring
|
|
13
|
+
graph of who-calls-what. Querying a node costs a few hundred tokens; rebuilding
|
|
14
|
+
that understanding by reading source costs thousands, and misses the edges.
|
|
15
|
+
|
|
16
|
+
Every command below is `$0`, needs no API key, and returns in under a second.
|
|
17
|
+
There are six of them. **Pick the one that fits the task, run it, act on the
|
|
18
|
+
answer; don't chain tools hoping for more. Most tasks need one call.**
|
|
19
|
+
|
|
20
|
+
## The tools
|
|
21
|
+
|
|
22
|
+
### 1 · `graft ask "<question>" --source`: locate + understand (the default)
|
|
23
|
+
Ranked retrieval over the graph, routed automatically between prose nodes and
|
|
24
|
+
the wiring graph, returning the top hits with exact `file:line`.
|
|
25
|
+
- `--source` inlines the code at each hit, the ≤8-line **crux** of each
|
|
26
|
+
definition, so the result IS the code you need, no follow-up file read. Add
|
|
27
|
+
`--full` only when the crux is too small to act on.
|
|
28
|
+
- `--in <path>` narrows to a subtree before ranking; `-n N` caps results (default 8).
|
|
29
|
+
- **Use it when** the question is conceptual or locational: "how does auth
|
|
30
|
+
work", "where is rate-limiting handled", "what assembles the request pipeline".
|
|
31
|
+
- One ask usually answers. A genuinely multi-part question needs one ask per
|
|
32
|
+
distinct sub-aspect, never the same question reworded. Few or weak hits mean
|
|
33
|
+
switch tool (grep / skeleton / callers), don't re-ask.
|
|
34
|
+
|
|
35
|
+
### 2 · `graft grep "<pattern>"`: exhaustive find
|
|
36
|
+
Regex (or `--fixed` for a literal) over every indexed file, hits **grouped by
|
|
37
|
+
enclosing symbol** and ranked by coupling; it also reports files it couldn't read.
|
|
38
|
+
- **Use it when** you need every occurrence: all call sites, all uses of a
|
|
39
|
+
constant, all providers. `ask` is ranked top-N and *will* miss instances;
|
|
40
|
+
grep won't. One grep replaces a spray of asks.
|
|
41
|
+
- Search a **short symbol name or literal**, not a full guessed signature: an
|
|
42
|
+
over-specific regex (`func (s *Server) GenerateHandler`) returns nothing even
|
|
43
|
+
when the code is indexed. If a grep misses, **loosen it** (drop the receiver
|
|
44
|
+
and signature, keep the bare name) and retry `graft grep` — do NOT switch to
|
|
45
|
+
raw `grep -rn`, which is slower and unranked.
|
|
46
|
+
- `-i` case-insensitive; `--in <path>` scopes to a subtree. Raw `grep -rn` is
|
|
47
|
+
only for files graft genuinely doesn't index (docs, configs, brand-new files).
|
|
48
|
+
|
|
49
|
+
### 3 · `graft skeleton <file>`: a file's API at a glance
|
|
50
|
+
Signatures-only view of one file (every function / method / type with its span)
|
|
51
|
+
in ~200 tokens, ~10x cheaper than reading the file.
|
|
52
|
+
- **Use it when** you need "what's in this file / what can I call here" before
|
|
53
|
+
editing or wiring into it. One skeleton is the whole answer for a file; don't
|
|
54
|
+
re-skeleton the same file, and don't skeleton every file `map` already named.
|
|
55
|
+
|
|
56
|
+
### 4 · `graft callers <symbol>`: the exact edges
|
|
57
|
+
Precomputed call/reference edges, not a text search. Symbol can be bare
|
|
58
|
+
(`Foo`), qualified (`Class.method`), or package-qualified (`pkg.Fn`).
|
|
59
|
+
- default `--direction in`: **who calls/references** this; run before you
|
|
60
|
+
rename, delete, or change its signature.
|
|
61
|
+
- `--direction out`: **what this symbol itself calls/depends on** (the old `callees`).
|
|
62
|
+
- `--depth N`: walk transitively N hops for the **full blast radius** (the old
|
|
63
|
+
`impact`); `--depth 2` is the usual "what breaks if I touch this".
|
|
64
|
+
- `--depth all`: the **entire connected closure** — every source reachable
|
|
65
|
+
through the edges. Reach for this before a **refactor, rename, or any
|
|
66
|
+
multi-file change**: it surfaces the sibling and downstream files (platform
|
|
67
|
+
variants, a module you must split out) that a single-file edit would miss.
|
|
68
|
+
|
|
69
|
+
### 5 · `graft map`: orientation for an unfamiliar repo or area
|
|
70
|
+
A token-budgeted tour: directory clusters, per-directory hubs, and global
|
|
71
|
+
hotspots, straight from the wiring graph.
|
|
72
|
+
- **Use it when** you land in a repo cold or are asked for "the architecture".
|
|
73
|
+
`map` alone is the answer: read the hub cards it names; do NOT then skeleton
|
|
74
|
+
or ask your way through every subsystem it lists. `--max-dirs N` widens it.
|
|
75
|
+
|
|
76
|
+
### 6 · Lifecycle: `graft build` / `graft check`
|
|
77
|
+
Every tool above refreshes the graph itself before answering, so what those tools
|
|
78
|
+
return always describes the code as it is right now — including edits you just made
|
|
79
|
+
and have not committed. You do **not** need to run `build` after editing.
|
|
80
|
+
|
|
81
|
+
One caveat, if you `grep` the markdown under `graft/` directly: those cards are a
|
|
82
|
+
projection, rebuilt at the end of the turn rather than on each query, so after an edit
|
|
83
|
+
they can lag. The tools above never do — prefer them, and treat a card's spans as
|
|
84
|
+
stale if you have edited that file this turn.
|
|
85
|
+
|
|
86
|
+
`build` is for the LLM layer (`--deep` adds a concept map; skip unless asked);
|
|
87
|
+
`check` fails when `graft/` is stale, for CI.
|
|
88
|
+
|
|
89
|
+
## Scenarios: the shortest path through a coding task
|
|
90
|
+
|
|
91
|
+
| When you're… | Reach for | Calls |
|
|
92
|
+
|---|---|---|
|
|
93
|
+
| Onboarding / "explain this codebase" | `graft map`, then read the named hub cards | 1 |
|
|
94
|
+
| Understanding a flow ("how does X work") | `graft ask "<flow>" --source` | 1 |
|
|
95
|
+
| Finding where a change belongs | `graft ask "where is <behavior>" --source` | 1 |
|
|
96
|
+
| Editing a symbol you can already name | `graft grep "<symbol>"`, edit at the `file:line` (skip `ask` — you know where it is) | 1 |
|
|
97
|
+
| Renaming / deleting / changing a signature | `graft callers <sym> --depth 2` first | 1 |
|
|
98
|
+
| Refactor / multi-file change (before editing) | `graft callers <sym> --depth all` — map every connected file, don't stop at the first | 1 |
|
|
99
|
+
| "What does this depend on?" | `graft callers <sym> --direction out` | 1 |
|
|
100
|
+
| Finding every occurrence of a pattern | `graft grep "<literal>"` | 1 |
|
|
101
|
+
| "What's the API of this file?" | `graft skeleton <file>` | 1 |
|
|
102
|
+
| Debugging a failure in area X | `graft ask "<symptom>" --source`, then `callers` on the suspect | 1–2 |
|
|
103
|
+
| Judging a diff's risk before merge | `graft callers <changed sym> --depth 2` | 1 / symbol |
|
|
104
|
+
| Working inside one repo of a monorepo | add `--in <scope>/` to ask / grep / callers | n/a |
|
|
105
|
+
|
|
106
|
+
In a multi-repo workspace, graft ranks fairly so the biggest repo can't drown
|
|
107
|
+
the rest, and every hit carries a `[scope/]` label naming its sub-project; when
|
|
108
|
+
you already know where you're working, narrow with `graft ask "<task>" --in <scope>/`.
|
|
109
|
+
|
|
110
|
+
## Spend the fewest calls
|
|
111
|
+
- A node's `covers:` list already gives exact `file:line` for every symbol, so
|
|
112
|
+
cite straight from it. The spans are generated from source and authoritative;
|
|
113
|
+
don't re-open or re-grep files to "double-check".
|
|
114
|
+
- When the task already names the file or symbol to change, go straight there:
|
|
115
|
+
`graft grep "<symbol>"` for the exact `file:line`, then edit. Reserve
|
|
116
|
+
`graft ask` for when you don't yet know where the code lives — an `ask`
|
|
117
|
+
round-trip is wasted on a target you can already name.
|
|
118
|
+
- Trust the answer and act. Reach for a second tool only when the first genuinely
|
|
119
|
+
fell short: weak hits, a truncated span, or a need to be exhaustive.
|
|
120
|
+
- If graft names a path that isn't on disk, its index is ahead of your checkout
|
|
121
|
+
(a branch switch or unpulled move). Don't read the missing file — `graft grep`
|
|
122
|
+
the symbol to find where it lives now, or run `graft build` to refresh.
|
|
123
|
+
|
|
124
|
+
## Report what graft saved, every turn
|
|
125
|
+
Each retrieval tool **opens** its output with a `[graft] tokens saved ≈ N` line:
|
|
126
|
+
the estimated tokens that call saved versus reading the files it covers whole.
|
|
127
|
+
Whenever you used any graft tool in a turn, close your reply with a one-line
|
|
128
|
+
tally summing those numbers across every graft call you made, e.g.
|
|
129
|
+
`🌱 graft saved ~12,400 tokens this turn (3 calls)`. A call with no such line
|
|
130
|
+
(tiny files, where the pointers cost as much as the source) saved nothing, so
|
|
131
|
+
skip it. This is the per-turn figure; the statusline carries the running
|
|
132
|
+
session total.
|
|
133
|
+
|
|
134
|
+
Once a turn has been billed, each line also states what that call was worth in
|
|
135
|
+
dollars, at the rate this session is actually paying for input tokens — include
|
|
136
|
+
that total alongside the tokens, e.g. `🌱 graft saved ~12,400 tokens (~$0.04)
|
|
137
|
+
this turn`. When a line carries no dollar figure, report tokens alone rather
|
|
138
|
+
than pricing them yourself.
|
|
139
|
+
|
|
140
|
+
**Never pipe a graft command through `head`, `tail`, or `sed -n`.** Every tool
|
|
141
|
+
is already capped and states what it dropped; clipping it costs you hits you
|
|
142
|
+
asked for, and it silently drops the savings line the statusline's running
|
|
143
|
+
total is parsed from.
|
|
144
|
+
|
|
145
|
+
## When graft isn't enough
|
|
146
|
+
- Span truncated ("+N more lines"): open the file at that exact range.
|
|
147
|
+
- A node lacks a detail: ask a more specific question; only then read source at
|
|
148
|
+
the exact `file:line`, never a whole file to rebuild understanding graft gives.
|
|
149
|
+
- You may also grep / ls / cat inside `graft/` directly (plain markdown;
|
|
150
|
+
`graft/INDEX.md` indexes the nodes), but the tools above are faster and
|
|
151
|
+
exhaustive where it matters, so reach for them first.
|
|
152
|
+
|
|
153
|
+
When the graft MCP server is connected, these are exposed as tools too:
|
|
154
|
+
`graft_find_code`, `graft_find_all`, `graft_file_api`, `graft_trace_calls` (with
|
|
155
|
+
`direction` / `depth`), `graft_repo_map`, `graft_check_freshness`. Use whichever surface is
|
|
156
|
+
available; the guidance is identical.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: loop
|
|
3
|
+
description: Continue a bounded task across runs with checkpoints, verification, retries, and explicit stop conditions.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
category: core
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Loop
|
|
9
|
+
|
|
10
|
+
Use when a task must continue across time or while the owner is unavailable.
|
|
11
|
+
|
|
12
|
+
Before starting, require a task id, profile, scope, finite budget, maximum iterations, retry policy, and success condition. Each iteration must:
|
|
13
|
+
|
|
14
|
+
1. Read the task state and latest checkpoint.
|
|
15
|
+
2. Do one bounded unit of work.
|
|
16
|
+
3. Verify the unit with a real check.
|
|
17
|
+
4. Write a concise checkpoint with the next action.
|
|
18
|
+
5. Stop on success, budget exhaustion, repeated failure, missing input, authentication, or a consequential action requiring approval.
|
|
19
|
+
|
|
20
|
+
Never loop blindly over irreversible actions. Preserve the session and task state so a later run resumes from the checkpoint. Report completed work, evidence, remaining work, and the stop reason.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: session-handoff
|
|
3
|
+
description: Produce a compact continuation packet with the next action and verification commands.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
category: core
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Session handoff
|
|
9
|
+
|
|
10
|
+
Create a portable continuation packet, not a transcript.
|
|
11
|
+
|
|
12
|
+
Include the project and task, one-line objective, verified results, important decisions,
|
|
13
|
+
changed paths, blockers, the next concrete action, and exact verification commands. Point to
|
|
14
|
+
durable files instead of copying their contents. Never include credentials, tokens, cookies,
|
|
15
|
+
private documents, or unnecessary session identifiers.
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: use-browser
|
|
3
|
+
description: Open a supplied URL, understand the user's requested outcome from the live page, complete the browser task, and verify the result.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
category: core
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Use Browser
|
|
9
|
+
|
|
10
|
+
Use when the user gives a URL and asks the agent to complete, fill, test, submit, or otherwise operate the page.
|
|
11
|
+
|
|
12
|
+
The skill defines the task and verification contract. When the user asks for their own
|
|
13
|
+
signed-in Chrome or a shared MCP connection, the routes are in `docs/browser-clients.md`:
|
|
14
|
+
the marketplace `dev.ocean/chrome-devtools` entry, the browser bridge, or Playwright MCP.
|
|
15
|
+
Ocean's `ocean browser` capability remains the deterministic local backend for repeatable
|
|
16
|
+
JSON task files.
|
|
17
|
+
|
|
18
|
+
Use Ocean's `ocean browser` capability through the terminal as the default browser backend. Do not switch to `claude-in-chrome`, an extension, or another browser connector unless the user explicitly asks for that backend. If Ocean cannot detect or open a browser, report the exact command result and stop; do not ask the user to install a different browser extension as the first workaround.
|
|
19
|
+
|
|
20
|
+
## Cost-aware execution
|
|
21
|
+
|
|
22
|
+
Keep browser work bounded and token-efficient. Use one `observe` and one targeted `read` before acting, prefer `extract` over rereading the whole page, and keep page text bounded. Do not run exploratory shell scripts or repeated reload/undo cycles when a deterministic browser operation is unavailable. Use at most one retry for a reversible step and no automatic retry for submit, upload, purchase, message, or other consequential actions. If the live state is ambiguous after the bounded attempt, stop and report the blocker instead of spending more tokens guessing.
|
|
23
|
+
|
|
24
|
+
## Workflow
|
|
25
|
+
|
|
26
|
+
1. Treat the URL as the starting location, not as permission to perform every possible action on the site.
|
|
27
|
+
2. Open or reconnect to an Ocean browser session with a persistent profile. Navigate to the URL.
|
|
28
|
+
3. Inspect the live page with `observe`, `read`, and targeted `extract`. Identify the page's current state, the user's intended outcome, required fields, available controls, and a concrete success signal.
|
|
29
|
+
4. Build the smallest step sequence that reaches the requested outcome. Prefer stable labels, roles, names, ids, and visible text. Use editor selectors for `contenteditable`, CodeMirror/Monaco containers, and `frame >>> editor` for same-origin iframe editors.
|
|
30
|
+
5. For code-editor changes, use `ocean browser replace-text <session-id> <selector> <old-text> <new-text> --occurrence <n>` when replacing a specific token. Never simulate a precise replacement by clicking and typing into the middle of a Monaco/CodeMirror line. Verify the returned editor value and then re-read the page.
|
|
31
|
+
6. Execute through Ocean browser operations or a bounded browser task file. Keep the task file small, cap retries at 0–1, and cap total steps to the minimum needed. After every state-changing step, verify the live post-condition. Stop if the page state contradicts the plan.
|
|
32
|
+
7. For forms, tests, purchases, uploads, messages, or other externally visible mutations, keep the existing Ocean approval gate. Ask for confirmation only at the final consequential action when approval is not already present.
|
|
33
|
+
8. If a field is ambiguous, required data is missing, authentication is needed, or the page reports failure, stop with the exact blocker. Do not invent personal, financial, legal, academic, or credential data.
|
|
34
|
+
9. Report the outcome, the verified success signal, and any unverified or blocked step. Close the browser session only if the user requested cleanup; otherwise preserve it for continuation.
|
|
35
|
+
|
|
36
|
+
## Client-neutral task prompt
|
|
37
|
+
|
|
38
|
+
Normalize browser requests to:
|
|
39
|
+
|
|
40
|
+
```text
|
|
41
|
+
url: <starting URL>
|
|
42
|
+
task: <human-readable outcome>
|
|
43
|
+
continue: true
|
|
44
|
+
verify: <observable success signal>
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Use one bounded loop, verify every state-changing action, and stop when the
|
|
48
|
+
success signal is present or a required human decision is reached.
|
|
49
|
+
|
|
50
|
+
## Ocean execution shape
|
|
51
|
+
|
|
52
|
+
Use the browser capability's session lifecycle and task runner:
|
|
53
|
+
|
|
54
|
+
```text
|
|
55
|
+
ocean browser detect
|
|
56
|
+
ocean browser open --profile <profile>
|
|
57
|
+
ocean browser approve <session-id>
|
|
58
|
+
ocean browser navigate <session-id> <URL> --approve
|
|
59
|
+
ocean browser observe <session-id>
|
|
60
|
+
ocean browser read <session-id>
|
|
61
|
+
ocean browser replace-text <session-id> <selector> <old-text> <new-text> --occurrence <n>
|
|
62
|
+
ocean browser run <session-id> <task-file> --approve
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Use direct operations for discovery and a bounded JSON task for repeatable execution. Keep task files small, set `retries` to 0–2, and never use retries to repeat an irreversible action blindly. The runner caps retries at three and stops on failed verification.
|
|
66
|
+
|
|
67
|
+
## Completion contract
|
|
68
|
+
|
|
69
|
+
A task is complete only when the requested outcome is visible in live page state: a success message, changed status, expected navigation, submitted result, or another explicit post-condition. A click or lack of error is not proof by itself.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: verification
|
|
3
|
+
description: Turn implementation claims into focused, repeatable verification checks.
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
category: core
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Verification
|
|
9
|
+
|
|
10
|
+
For every non-trivial change, define the smallest runnable check that proves behavior,
|
|
11
|
+
then report proven facts separately from assumptions and limitations.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"name": "business-logic",
|
|
4
|
+
"description": "Convert a product request into explicit rules, states, permissions, exceptions, and verifiable acceptance criteria.",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"category": "core"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"name": "catch-up",
|
|
10
|
+
"description": "Reconstruct the current project state, completed work, blockers, and next action.",
|
|
11
|
+
"version": "1.0.0",
|
|
12
|
+
"category": "core"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"name": "core-thinking",
|
|
16
|
+
"description": "Analyze goals, constraints, risks, and evidence before execution.",
|
|
17
|
+
"version": "1.0.0",
|
|
18
|
+
"category": "core"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"name": "design-thinking",
|
|
22
|
+
"description": "Frame a problem, clarify the desired outcome, compare simple solutions, and define success before implementation.",
|
|
23
|
+
"version": "1.0.0",
|
|
24
|
+
"category": "core"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"name": "graft",
|
|
28
|
+
"description": "This repo is indexed by graft/. For ANY task here, whether understanding how something works, finding where code lives, tracing what calls a symbol or what a change breaks, or scoping an edit, get your context from graft before grepping or reading source files.",
|
|
29
|
+
"version": "1.0.0",
|
|
30
|
+
"category": "core"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"name": "loop",
|
|
34
|
+
"description": "Continue a bounded task across runs with checkpoints, verification, retries, and explicit stop conditions.",
|
|
35
|
+
"version": "1.0.0",
|
|
36
|
+
"category": "core"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "session-handoff",
|
|
40
|
+
"description": "Produce a compact continuation packet with the next action and verification commands.",
|
|
41
|
+
"version": "1.0.0",
|
|
42
|
+
"category": "core"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"name": "use-browser",
|
|
46
|
+
"description": "Open a supplied URL, understand the user's requested outcome from the live page, complete the browser task, and verify the result.",
|
|
47
|
+
"version": "1.0.0",
|
|
48
|
+
"category": "core"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"name": "verification",
|
|
52
|
+
"description": "Turn implementation claims into focused, repeatable verification checks.",
|
|
53
|
+
"version": "1.0.0",
|
|
54
|
+
"category": "core"
|
|
55
|
+
}
|
|
56
|
+
]
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 2,
|
|
3
|
+
"name": "default",
|
|
4
|
+
"description": "General-purpose assistant profile for ad-hoc work across the active workspace.",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"role": "general assistant",
|
|
7
|
+
"skills": [],
|
|
8
|
+
"contextSources": [],
|
|
9
|
+
"defaultClient": "claude",
|
|
10
|
+
"clients": {
|
|
11
|
+
"claude": {
|
|
12
|
+
"enabled": true,
|
|
13
|
+
"model": "sonnet",
|
|
14
|
+
"transport": "cli"
|
|
15
|
+
},
|
|
16
|
+
"codex": {
|
|
17
|
+
"enabled": true,
|
|
18
|
+
"transport": "cli",
|
|
19
|
+
"model": "provider-managed"
|
|
20
|
+
},
|
|
21
|
+
"gemini": {
|
|
22
|
+
"enabled": true,
|
|
23
|
+
"transport": "cli",
|
|
24
|
+
"model": "provider-managed"
|
|
25
|
+
},
|
|
26
|
+
"antigravity": {
|
|
27
|
+
"enabled": true,
|
|
28
|
+
"transport": "cli",
|
|
29
|
+
"model": "provider-managed"
|
|
30
|
+
},
|
|
31
|
+
"hermes": {
|
|
32
|
+
"enabled": true,
|
|
33
|
+
"transport": "cli",
|
|
34
|
+
"model": "provider-managed"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"governance": {
|
|
38
|
+
"allowedPaths": ["."],
|
|
39
|
+
"allowedCommands": [],
|
|
40
|
+
"writePolicy": "workspace"
|
|
41
|
+
},
|
|
42
|
+
"memory": {
|
|
43
|
+
"enabled": true,
|
|
44
|
+
"scope": "profile"
|
|
45
|
+
},
|
|
46
|
+
"verification": {
|
|
47
|
+
"commands": []
|
|
48
|
+
},
|
|
49
|
+
"contextCompression": "none",
|
|
50
|
+
"instructions": "Handle ad-hoc work carefully. Preserve unrelated changes and report what was verified."
|
|
51
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 2,
|
|
3
|
+
"name": "developer",
|
|
4
|
+
"description": "Implementation profile: reads and writes within the workspace to build and fix code.",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"role": "developer",
|
|
7
|
+
"skills": [],
|
|
8
|
+
"contextSources": [],
|
|
9
|
+
"defaultClient": "claude",
|
|
10
|
+
"clients": {
|
|
11
|
+
"claude": {
|
|
12
|
+
"enabled": true,
|
|
13
|
+
"model": "sonnet",
|
|
14
|
+
"transport": "cli"
|
|
15
|
+
},
|
|
16
|
+
"codex": {
|
|
17
|
+
"enabled": true,
|
|
18
|
+
"transport": "cli",
|
|
19
|
+
"model": "provider-managed"
|
|
20
|
+
},
|
|
21
|
+
"gemini": {
|
|
22
|
+
"enabled": true,
|
|
23
|
+
"transport": "cli",
|
|
24
|
+
"model": "provider-managed"
|
|
25
|
+
},
|
|
26
|
+
"antigravity": {
|
|
27
|
+
"enabled": true,
|
|
28
|
+
"transport": "cli",
|
|
29
|
+
"model": "provider-managed"
|
|
30
|
+
},
|
|
31
|
+
"hermes": {
|
|
32
|
+
"enabled": true,
|
|
33
|
+
"transport": "cli",
|
|
34
|
+
"model": "provider-managed"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"governance": {
|
|
38
|
+
"allowedPaths": ["."],
|
|
39
|
+
"allowedCommands": [],
|
|
40
|
+
"writePolicy": "workspace"
|
|
41
|
+
},
|
|
42
|
+
"memory": {
|
|
43
|
+
"enabled": true,
|
|
44
|
+
"scope": "profile"
|
|
45
|
+
},
|
|
46
|
+
"verification": {
|
|
47
|
+
"commands": ["pnpm test"]
|
|
48
|
+
},
|
|
49
|
+
"contextCompression": "none",
|
|
50
|
+
"instructions": "Inspect before editing. Preserve unrelated work. Run focused tests and report proven results."
|
|
51
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 2,
|
|
3
|
+
"name": "reviewer",
|
|
4
|
+
"description": "Read-only profile: reviews changes and reports findings without writing to the workspace.",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"role": "code reviewer",
|
|
7
|
+
"skills": [],
|
|
8
|
+
"contextSources": [],
|
|
9
|
+
"defaultClient": "claude",
|
|
10
|
+
"clients": {
|
|
11
|
+
"claude": {
|
|
12
|
+
"enabled": true,
|
|
13
|
+
"model": "sonnet",
|
|
14
|
+
"transport": "cli"
|
|
15
|
+
},
|
|
16
|
+
"codex": {
|
|
17
|
+
"enabled": true,
|
|
18
|
+
"transport": "cli",
|
|
19
|
+
"model": "provider-managed"
|
|
20
|
+
},
|
|
21
|
+
"gemini": {
|
|
22
|
+
"enabled": true,
|
|
23
|
+
"transport": "cli",
|
|
24
|
+
"model": "provider-managed"
|
|
25
|
+
},
|
|
26
|
+
"antigravity": {
|
|
27
|
+
"enabled": true,
|
|
28
|
+
"transport": "cli",
|
|
29
|
+
"model": "provider-managed"
|
|
30
|
+
},
|
|
31
|
+
"hermes": {
|
|
32
|
+
"enabled": true,
|
|
33
|
+
"transport": "cli",
|
|
34
|
+
"model": "provider-managed"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"governance": {
|
|
38
|
+
"allowedPaths": ["."],
|
|
39
|
+
"allowedCommands": [],
|
|
40
|
+
"writePolicy": "none"
|
|
41
|
+
},
|
|
42
|
+
"memory": {
|
|
43
|
+
"enabled": true,
|
|
44
|
+
"scope": "profile"
|
|
45
|
+
},
|
|
46
|
+
"verification": {
|
|
47
|
+
"commands": []
|
|
48
|
+
},
|
|
49
|
+
"contextCompression": "none",
|
|
50
|
+
"instructions": "Review changes without editing files. Separate findings from assumptions and identify missing evidence."
|
|
51
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 2,
|
|
3
|
+
"name": "strategist",
|
|
4
|
+
"description": "Planning-only profile: reasons about approach and risk without writing to the workspace.",
|
|
5
|
+
"version": "1.0.0",
|
|
6
|
+
"role": "strategist",
|
|
7
|
+
"skills": [],
|
|
8
|
+
"contextSources": [],
|
|
9
|
+
"defaultClient": "claude",
|
|
10
|
+
"clients": {
|
|
11
|
+
"claude": {
|
|
12
|
+
"enabled": true,
|
|
13
|
+
"model": "sonnet",
|
|
14
|
+
"transport": "cli"
|
|
15
|
+
},
|
|
16
|
+
"codex": {
|
|
17
|
+
"enabled": true,
|
|
18
|
+
"transport": "cli",
|
|
19
|
+
"model": "provider-managed"
|
|
20
|
+
},
|
|
21
|
+
"gemini": {
|
|
22
|
+
"enabled": true,
|
|
23
|
+
"transport": "cli",
|
|
24
|
+
"model": "provider-managed"
|
|
25
|
+
},
|
|
26
|
+
"antigravity": {
|
|
27
|
+
"enabled": true,
|
|
28
|
+
"transport": "cli",
|
|
29
|
+
"model": "provider-managed"
|
|
30
|
+
},
|
|
31
|
+
"hermes": {
|
|
32
|
+
"enabled": true,
|
|
33
|
+
"transport": "cli",
|
|
34
|
+
"model": "provider-managed"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"governance": {
|
|
38
|
+
"allowedPaths": ["."],
|
|
39
|
+
"allowedCommands": [],
|
|
40
|
+
"writePolicy": "none"
|
|
41
|
+
},
|
|
42
|
+
"memory": {
|
|
43
|
+
"enabled": true,
|
|
44
|
+
"scope": "profile"
|
|
45
|
+
},
|
|
46
|
+
"verification": {
|
|
47
|
+
"commands": []
|
|
48
|
+
},
|
|
49
|
+
"contextCompression": "none",
|
|
50
|
+
"instructions": "Plan and reason about approach and risk without writing to the workspace."
|
|
51
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Inbox
|
|
2
|
+
|
|
3
|
+
Unprocessed incoming information, waiting for explicit triage into its real home. Empty is the
|
|
4
|
+
healthy steady state.
|
|
5
|
+
|
|
6
|
+
- `candidates/` — proposed memory records (inferred, imported or harvested), awaiting review.
|
|
7
|
+
- `native/` — staging for clients' own memory stores; never searched as truth.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Memory index
|
|
2
|
+
|
|
3
|
+
The router for personal facts. Start here, then open only the one record a task needs; the
|
|
4
|
+
records below are canonical, this list only points at them.
|
|
5
|
+
|
|
6
|
+
**Memory holds what is true about the owner and their world**, for years. When unsure, ask:
|
|
7
|
+
does it stay true even if they stop coding? Yes → a memory record. No → `05-knowledge/`.
|
|
8
|
+
|
|
9
|
+
## Retrieval rules
|
|
10
|
+
|
|
11
|
+
- Every fact lives in one record; anything else that needs it links there.
|
|
12
|
+
- New information that disagrees with a record goes to `CONFLICTS.md` until resolved.
|
|
13
|
+
- Inferred or imported facts are proposed as candidates (`00-inbox/candidates/`) for review.
|
|
14
|
+
|
|
15
|
+
## Records (generated)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Projects
|
|
2
|
+
|
|
3
|
+
One folder per project: `<project>/project.json`, `tasks/<ID>/` (the task record is
|
|
4
|
+
authoritative), `memory/` (lessons about this project) and `docs/` (its references). Copy
|
|
5
|
+
`_template/` to start a project, or let `ocean tasks new --project <id>` create it.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Knowledge index
|
|
2
|
+
|
|
3
|
+
What work taught us, kept so the next task can reuse it instead of rediscovering it. Memory is
|
|
4
|
+
about the person; this is about the work: decisions, lessons, solutions, research.
|
|
5
|
+
|
|
6
|
+
Look in `decisions/` before suggesting something that reverses an earlier decision.
|
|
7
|
+
|
|
8
|
+
## Records (generated)
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# personal/templates/
|
|
2
|
+
|
|
3
|
+
Reusable document templates. **Never publishable** (templates themselves are generic, but the directory is private workspace).
|
|
4
|
+
|
|
5
|
+
Standardized templates for common document types used across Ocean workflows.
|
|
6
|
+
|
|
7
|
+
## Available templates
|
|
8
|
+
|
|
9
|
+
| Template | Purpose |
|
|
10
|
+
|---|---|
|
|
11
|
+
| **decision.md** | Structured decision record — context, options, chosen, reason, consequences |
|
|
12
|
+
| **intelligence.md** | Intelligence gathering template — source, findings, assessment, open questions |
|
|
13
|
+
| **project-claude.md** | Claude-specific project template — for project context and instructions |
|
|
14
|
+
| **session.md** | Session record template — what happened, what was decided, what's next |
|
|
15
|
+
| **task.md** | Task record template — scope, goal, constraints, artifacts, verification |
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
Copy the template to the target location and fill in the frontmatter and content. Templates are starting points, not rigid forms — adapt them to the specific context.
|
|
20
|
+
|
|
21
|
+
## Privacy
|
|
22
|
+
|
|
23
|
+
The templates themselves are generic and could be published, but this directory is private workspace state. The templates may reference workspace-specific conventions. Keep them private.
|
|
24
|
+
|
|
25
|
+
See: `personal/README.md`
|