accrete-kit 0.0.0-stage → 0.1.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/CHANGELOG.md +43 -0
- package/LICENSE +21 -0
- package/README.md +148 -2
- package/bin/accrete-kit.mjs +4 -0
- package/dist/kernel/darwin-arm64/LICENSE +21 -0
- package/dist/kernel/darwin-arm64/THIRD-PARTY-NOTICES +5780 -0
- package/dist/kernel/darwin-arm64/accrete +0 -0
- package/dist/kernel/darwin-arm64/licenses/RUST-COPYRIGHT-library.html +7038 -0
- package/dist/kernel/darwin-arm64/licenses/musl-COPYRIGHT +193 -0
- package/dist/kernel/darwin-arm64/licenses/rust/Apache-2.0.txt +73 -0
- package/dist/kernel/darwin-arm64/licenses/rust/BSD-2-Clause.txt +9 -0
- package/dist/kernel/darwin-arm64/licenses/rust/CC-BY-SA-4.0.txt +427 -0
- package/dist/kernel/darwin-arm64/licenses/rust/GCC-exception-3.1.txt +30 -0
- package/dist/kernel/darwin-arm64/licenses/rust/GPL-2.0-only.txt +133 -0
- package/dist/kernel/darwin-arm64/licenses/rust/GPL-3.0-or-later.txt +202 -0
- package/dist/kernel/darwin-arm64/licenses/rust/ISC.txt +7 -0
- package/dist/kernel/darwin-arm64/licenses/rust/LLVM-exception.txt +15 -0
- package/dist/kernel/darwin-arm64/licenses/rust/MIT.txt +9 -0
- package/dist/kernel/darwin-arm64/licenses/rust/NCSA.txt +29 -0
- package/dist/kernel/darwin-arm64/licenses/rust/OFL-1.1.txt +43 -0
- package/dist/kernel/darwin-arm64/licenses/rust/Unicode-3.0.txt +39 -0
- package/dist/kernel/darwin-x64/LICENSE +21 -0
- package/dist/kernel/darwin-x64/THIRD-PARTY-NOTICES +5780 -0
- package/dist/kernel/darwin-x64/accrete +0 -0
- package/dist/kernel/darwin-x64/licenses/RUST-COPYRIGHT-library.html +7038 -0
- package/dist/kernel/darwin-x64/licenses/musl-COPYRIGHT +193 -0
- package/dist/kernel/darwin-x64/licenses/rust/Apache-2.0.txt +73 -0
- package/dist/kernel/darwin-x64/licenses/rust/BSD-2-Clause.txt +9 -0
- package/dist/kernel/darwin-x64/licenses/rust/CC-BY-SA-4.0.txt +427 -0
- package/dist/kernel/darwin-x64/licenses/rust/GCC-exception-3.1.txt +30 -0
- package/dist/kernel/darwin-x64/licenses/rust/GPL-2.0-only.txt +133 -0
- package/dist/kernel/darwin-x64/licenses/rust/GPL-3.0-or-later.txt +202 -0
- package/dist/kernel/darwin-x64/licenses/rust/ISC.txt +7 -0
- package/dist/kernel/darwin-x64/licenses/rust/LLVM-exception.txt +15 -0
- package/dist/kernel/darwin-x64/licenses/rust/MIT.txt +9 -0
- package/dist/kernel/darwin-x64/licenses/rust/NCSA.txt +29 -0
- package/dist/kernel/darwin-x64/licenses/rust/OFL-1.1.txt +43 -0
- package/dist/kernel/darwin-x64/licenses/rust/Unicode-3.0.txt +39 -0
- package/dist/kernel/kernel.json +17 -0
- package/dist/kernel/linux-arm64/LICENSE +21 -0
- package/dist/kernel/linux-arm64/THIRD-PARTY-NOTICES +5780 -0
- package/dist/kernel/linux-arm64/accrete +0 -0
- package/dist/kernel/linux-arm64/licenses/RUST-COPYRIGHT-library.html +7038 -0
- package/dist/kernel/linux-arm64/licenses/musl-COPYRIGHT +193 -0
- package/dist/kernel/linux-arm64/licenses/rust/Apache-2.0.txt +73 -0
- package/dist/kernel/linux-arm64/licenses/rust/BSD-2-Clause.txt +9 -0
- package/dist/kernel/linux-arm64/licenses/rust/CC-BY-SA-4.0.txt +427 -0
- package/dist/kernel/linux-arm64/licenses/rust/GCC-exception-3.1.txt +30 -0
- package/dist/kernel/linux-arm64/licenses/rust/GPL-2.0-only.txt +133 -0
- package/dist/kernel/linux-arm64/licenses/rust/GPL-3.0-or-later.txt +202 -0
- package/dist/kernel/linux-arm64/licenses/rust/ISC.txt +7 -0
- package/dist/kernel/linux-arm64/licenses/rust/LLVM-exception.txt +15 -0
- package/dist/kernel/linux-arm64/licenses/rust/MIT.txt +9 -0
- package/dist/kernel/linux-arm64/licenses/rust/NCSA.txt +29 -0
- package/dist/kernel/linux-arm64/licenses/rust/OFL-1.1.txt +43 -0
- package/dist/kernel/linux-arm64/licenses/rust/Unicode-3.0.txt +39 -0
- package/dist/kernel/linux-x64/LICENSE +21 -0
- package/dist/kernel/linux-x64/THIRD-PARTY-NOTICES +5780 -0
- package/dist/kernel/linux-x64/accrete +0 -0
- package/dist/kernel/linux-x64/licenses/RUST-COPYRIGHT-library.html +7038 -0
- package/dist/kernel/linux-x64/licenses/musl-COPYRIGHT +193 -0
- package/dist/kernel/linux-x64/licenses/rust/Apache-2.0.txt +73 -0
- package/dist/kernel/linux-x64/licenses/rust/BSD-2-Clause.txt +9 -0
- package/dist/kernel/linux-x64/licenses/rust/CC-BY-SA-4.0.txt +427 -0
- package/dist/kernel/linux-x64/licenses/rust/GCC-exception-3.1.txt +30 -0
- package/dist/kernel/linux-x64/licenses/rust/GPL-2.0-only.txt +133 -0
- package/dist/kernel/linux-x64/licenses/rust/GPL-3.0-or-later.txt +202 -0
- package/dist/kernel/linux-x64/licenses/rust/ISC.txt +7 -0
- package/dist/kernel/linux-x64/licenses/rust/LLVM-exception.txt +15 -0
- package/dist/kernel/linux-x64/licenses/rust/MIT.txt +9 -0
- package/dist/kernel/linux-x64/licenses/rust/NCSA.txt +29 -0
- package/dist/kernel/linux-x64/licenses/rust/OFL-1.1.txt +43 -0
- package/dist/kernel/linux-x64/licenses/rust/Unicode-3.0.txt +39 -0
- package/dist/scaffold/assets/contract/cli-v1.json +296 -0
- package/dist/scaffold/assets/contract/example-inputs.json +38 -0
- package/dist/scaffold/assets/contract/input-drafts.schema.json +654 -0
- package/dist/scaffold/assets/generated/cli-commands.md +288 -0
- package/dist/scaffold/assets/generated/release.json +11 -0
- package/dist/scaffold/assets/skills/accrete-data/SKILL.md +73 -0
- package/dist/scaffold/assets/skills/accrete-data/references/commands.md +193 -0
- package/dist/scaffold/assets/skills/accrete-data/references/objects-and-native-work.md +123 -0
- package/dist/scaffold/assets/skills/accrete-data/references/remote-and-retention.md +98 -0
- package/dist/scaffold/assets/skills/accrete-memory/SKILL.md +61 -0
- package/dist/scaffold/assets/skills/accrete-memory/references/commands.md +124 -0
- package/dist/scaffold/assets/skills/accrete-memory/references/handovers-and-remote-work.md +78 -0
- package/dist/scaffold/assets/skills/accrete-memory/references/writing-and-continuity.md +101 -0
- package/dist/scaffold/assets/skills/accrete-models/SKILL.md +46 -0
- package/dist/scaffold/assets/skills/accrete-models/references/cli.md +117 -0
- package/dist/scaffold/assets/skills/accrete-models/references/objects.md +67 -0
- package/dist/scaffold/assets/skills/accrete-models/references/working-practice.md +48 -0
- package/dist/scaffold/assets/skills/accrete-results/SKILL.md +69 -0
- package/dist/scaffold/assets/skills/accrete-results/references/activities-and-relations.md +116 -0
- package/dist/scaffold/assets/skills/accrete-results/references/commands.md +191 -0
- package/dist/scaffold/assets/skills/accrete-results/references/scientific-practice.md +89 -0
- package/dist/scaffold/assets/skills/accrete-tools/SKILL.md +51 -0
- package/dist/scaffold/assets/skills/accrete-tools/references/cli.md +87 -0
- package/dist/scaffold/assets/skills/accrete-tools/references/objects.md +66 -0
- package/dist/scaffold/assets/skills/accrete-tools/references/working-practice.md +51 -0
- package/dist/scaffold/assets/template/.accrete/PROJECT.md +31 -0
- package/dist/scaffold/assets/template/.accrete/config-examples/local-compute.toml.example +27 -0
- package/dist/scaffold/assets/template/.accrete/config-examples/local-workstation.toml.example +21 -0
- package/dist/scaffold/assets/template/.accrete/config-examples/project.toml.example +27 -0
- package/dist/scaffold/assets/template/.accrete/docs/cli-contract.md +393 -0
- package/dist/scaffold/assets/template/.accrete/docs/configuration.md +117 -0
- package/dist/scaffold/assets/template/.accrete/docs/coordinator.md +102 -0
- package/dist/scaffold/assets/template/.accrete/docs/long-term-work.md +108 -0
- package/dist/scaffold/assets/template/.accrete/docs/overview.md +118 -0
- package/dist/scaffold/assets/template/.accrete/docs/remote-work.md +125 -0
- package/dist/scaffold/assets/template/.accrete/docs/subagents.md +78 -0
- package/dist/scaffold/assets/template/.accrete/examples/README.md +78 -0
- package/dist/scaffold/assets/template/.accrete/examples/data-register.json +19 -0
- package/dist/scaffold/assets/template/.accrete/examples/iteration-close.json +5 -0
- package/dist/scaffold/assets/template/.accrete/examples/iteration-open.json +8 -0
- package/dist/scaffold/assets/template/.accrete/examples/memory-entry.md +10 -0
- package/dist/scaffold/assets/template/.accrete/examples/model-register.json +7 -0
- package/dist/scaffold/assets/template/.accrete/examples/observation.md +9 -0
- package/dist/scaffold/assets/template/.accrete/examples/result-amend.json +5 -0
- package/dist/scaffold/assets/template/.accrete/examples/result-record.json +11 -0
- package/dist/scaffold/assets/template/.accrete/examples/tool-admit.json +8 -0
- package/dist/scaffold/assets/template/.accrete/examples/tool-retire.json +3 -0
- package/dist/scaffold/assets/template/.accrete/examples/tool-update.json +3 -0
- package/dist/scaffold/assets/template/.gitattributes +17 -0
- package/dist/scaffold/assets/template/AGENTS.md +23 -0
- package/dist/scaffold/assets/template/CLAUDE.md +5 -0
- package/dist/scaffold/assets/template/_gitignore +12 -0
- package/dist/scaffold/config/defaults.toml +20 -0
- package/dist/scaffold/manifest.json +622 -0
- package/lib/cli.mjs +188 -0
- package/lib/fsutil.mjs +135 -0
- package/lib/install.mjs +439 -0
- package/lib/kernel.mjs +76 -0
- package/lib/scaffold.mjs +129 -0
- package/lib/workspace.mjs +278 -0
- package/package.json +18 -4
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Tool Kernel operations
|
|
2
|
+
|
|
3
|
+
This manual covers the Tool commands. `.accrete/docs/cli-contract.md` has the shared conventions and `accrete tool COMMAND --help` prints the flags.
|
|
4
|
+
|
|
5
|
+
Contents: [lifecycle](#operations), [source drafts](#prepare-source-and-input-drafts), [exposure](#expose-and-refresh), [retirement and export](#retire-or-export), [responses](#use-the-response).
|
|
6
|
+
|
|
7
|
+
## Operations
|
|
8
|
+
|
|
9
|
+
| Command | Durable effect | Work the Agent does with ordinary tools |
|
|
10
|
+
| --- | --- | --- |
|
|
11
|
+
| `tool admit` | Allocate a Tool ID and associate existing capability source | Develop the source and decide that it is useful to retain |
|
|
12
|
+
| `tool bind` | Set this host's source location for a known Tool | Obtain the source on this host |
|
|
13
|
+
| `tool update` | Amend descriptor metadata or select a source form or revision | Edit and commit implementation and knowledge |
|
|
14
|
+
| `tool expose` | Add a selected agent discovery interface | Choose whether automatic discovery helps |
|
|
15
|
+
| `tool refresh` | Reconcile existing managed discovery with the selected source and descriptor | Supply usable material and communicate consequential changes |
|
|
16
|
+
| `tool retire` | Mark current use retired and reconcile local managed exposures | Decide how the capability should evolve |
|
|
17
|
+
| `tool export` | Produce an explicit local export | Choose subsequent transport or publication |
|
|
18
|
+
|
|
19
|
+
All commands accept explicit project context through global `--project`; `ACCRETE_PROJECT` is the environment fallback. Use global `--json` when a caller needs structured mutation receipts. No operation requires a separate `tool create` stage or an admission evaluation.
|
|
20
|
+
|
|
21
|
+
## Prepare source and input drafts
|
|
22
|
+
|
|
23
|
+
Admit source that already exists, with flags or a draft written with an ordinary editor in Scratch:
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"name": "transport-diagnostics",
|
|
28
|
+
"description": "Compute and interpret transport diagnostics for the project's atmospheric model.",
|
|
29
|
+
"source": {
|
|
30
|
+
"path": "tools/transport-diagnostics",
|
|
31
|
+
"mode": "live"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
The example path is relative to the owning project. Replace it with the real source location; do not create a fake program merely to satisfy the draft. Source may be executable or cognitive. The Kernel allocates the Tool's document envelope, and an ID unless you supply `--id`.
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
accrete --project PROJECT_ROOT tool admit --from INPUT_FILE
|
|
40
|
+
accrete --project PROJECT_ROOT tool admit --name NAME --description TEXT --source SOURCE_DIRECTORY
|
|
41
|
+
accrete --project PROJECT_ROOT tool bind TOOL_ID --source SOURCE_DIRECTORY
|
|
42
|
+
accrete --project PROJECT_ROOT tool update TOOL_ID --from PATCH_FILE --expect REVISION
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
A source outside the project becomes a host-local binding rather than a portable path. On another host, obtain the source natively and run `tool bind`; an absent source is a binding to repair, not a reason to retire the Tool.
|
|
46
|
+
|
|
47
|
+
`tool update` accepts a JSON Merge Patch of the editable descriptor fields. Supply the current descriptor revision as `--expect`. Preserve unfamiliar fields by changing only the intended fields. An update can amend description or choose a new source; it does not edit, commit, or switch the actual source repository.
|
|
48
|
+
|
|
49
|
+
For a retained source, use `source.mode: "retained"`, a source commit in `source.revision`, and `source.path` naming usable material at that revision, or `--source-mode retained --revision COMMIT`. Prepare the corresponding checkout or export before attempting exposure; exposure requires a clean checkout at that commit, and `tool bind` can point this host at one. A live source can also carry a revision observation; that historical observation does not freeze subsequent edits.
|
|
50
|
+
|
|
51
|
+
## Expose and refresh
|
|
52
|
+
|
|
53
|
+
```text
|
|
54
|
+
accrete --project PROJECT_ROOT tool expose TOOL_ID --agent codex
|
|
55
|
+
accrete --project PROJECT_ROOT tool expose TOOL_ID --agent claude
|
|
56
|
+
accrete --project PROJECT_ROOT tool refresh TOOL_ID
|
|
57
|
+
accrete --project PROJECT_ROOT tool refresh TOOL_ID --agent codex
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
`--agent` chooses the discovery interface. The global `--host` is a different thing: it labels the machine. Exposure defaults to a portable wrapper. Use `--name NAME` when a distinct discovery name is needed (lowercase letters, digits and single hyphens, up to 64 characters) and `--mode symlink` only when deliberately selecting a direct link, which needs Unix and a source `SKILL.md` whose frontmatter `name` matches the exposure and whose `description` is nonempty. `--mode wrapper` requests the default explicitly. The exposure mechanism is independent of `source.mode`.
|
|
61
|
+
|
|
62
|
+
The Codex discovery destination is under `.agents/skills/`; Claude's is under `.claude/skills/`. `--destination DIRECTORY` selects another location, and the operation receipt names the exact path. `tool expose` excludes a generated exposure from Git through the repository-local `.git/info/exclude`, because a wrapper can hold this host's absolute source path. A generated wrapper is a valid Skill with a useful name, description, and a pointer to the complete source instructions. It says that references and executable paths resolve from the source directory.
|
|
63
|
+
|
|
64
|
+
Edit the source rather than a generated wrapper. After changing discovery-relevant content or a local source binding, refresh the affected managed interfaces. If there is no source Skill or equivalent usable guidance, continue using the Tool directly or develop that guidance before asking for discovery. An executable can remain a valid Tool without an exposure.
|
|
65
|
+
|
|
66
|
+
If the destination is occupied by unrelated or edited content, it is preserved and reported as a conflict. Choose another `--name` or `--destination`, or clear the destination yourself if the owner wants it replaced. Source absence or unavailable retained material leaves that exposure pending. Read the receipt to distinguish a retained Tool from an installed agent interface.
|
|
67
|
+
|
|
68
|
+
## Retire or export
|
|
69
|
+
|
|
70
|
+
```text
|
|
71
|
+
accrete --project PROJECT_ROOT tool retire TOOL_ID --expect REVISION [--from INPUT_FILE]
|
|
72
|
+
accrete --project PROJECT_ROOT tool export TOOL_ID --to DESTINATION
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
`--from` is optional. A document such as `{"reason":"Superseded by the project's current transport diagnostic."}` stores its `reason` on the descriptor. Submit the latest descriptor revision.
|
|
76
|
+
|
|
77
|
+
Retirement preserves the source and earlier associations. It removes managed discovery on the invoking host; other hosts run `tool refresh` after receiving the shared change. A running activity can finish using its already selected implementation. Do not remove source files or process state merely because the descriptor is retired.
|
|
78
|
+
|
|
79
|
+
Export writes a new local directory containing `tool.json` and `source/`. It omits Git internals and refuses symlinks whose transfer meaning needs an explicit choice, and an existing destination is a conflict. It does not publish a registry package or push a repository. Use the user's chosen native publishing method for any later distribution.
|
|
80
|
+
|
|
81
|
+
## Use the response
|
|
82
|
+
|
|
83
|
+
Read `object_id`, `path`, `revision`, and `committed` from the shared mutation receipt, plus each reported exposure or export effect. `index_pending` signals a delayed local projection, not loss of the primary descriptor. Admission and exposure have separate completion points: a Tool can exist while one agent interface remains pending.
|
|
84
|
+
|
|
85
|
+
For revision conflicts, read the latest descriptor and integrate the requested change before retrying. For lost acknowledgments on creation, supply a stable `--id` before the first attempt and repeat with the same ID; do not admit duplicate identities by guessing whether the previous write completed. If durability is reported uncertain, run `accrete recover`.
|
|
86
|
+
|
|
87
|
+
Read Tool source and descriptors with native file tools and Git. Use the actual implementation's executable directly. If a domain script also retains a Result or Data object, it calls the CLI and consumes receipts. Foundational Skill references never replace these operations with their own persistence scripts.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Tool meaning and relationships
|
|
2
|
+
|
|
3
|
+
## Capability, Tool, and Skill
|
|
4
|
+
|
|
5
|
+
| Term | Meaning | Useful consequence |
|
|
6
|
+
| --- | --- | --- |
|
|
7
|
+
| Capability | An ability to understand or do something | Can combine executable methods and explanatory knowledge |
|
|
8
|
+
| Tool | The retained project object through which the capability is named and maintained | Has a stable ID, source association, evolving description, and lifecycle |
|
|
9
|
+
| Skill | A host interface that lets an Agent discover and load the capability | Can expose an existing Tool without becoming its identity |
|
|
10
|
+
|
|
11
|
+
A numerical diagnostic can combine scripts, data conventions, plots, and interpretation notes. A guide to diagnosing model output can be entirely cognitive. A compiled program can remain directly callable while a small Skill explains its role. The project chooses the material that makes the ability reusable.
|
|
12
|
+
|
|
13
|
+
An experimental file does not need immediate admission. It becomes a Tool when preserving its identity and use is helpful. Source can remain in the project Git repository, an independently versioned repository, or an external directory. One repository per Tool is unnecessary.
|
|
14
|
+
|
|
15
|
+
The Tool ID remains stable when a capability changes its name, location, source revision, or host exposure. Several exposures can refer to the same Tool. A host-generated path is a locator; it must not become the identity used in Results.
|
|
16
|
+
|
|
17
|
+
## Source history and use
|
|
18
|
+
|
|
19
|
+
The Tool's source can include code, documentation, configuration, and reference material. Use ordinary editing and Git for that content. A descriptor identifies its purpose and source. Updating that descriptor is separate from editing source; refreshing discovery is separate again.
|
|
20
|
+
|
|
21
|
+
A Result can identify the Tool even when it was used directly by a program or read by path. Record its observed implementation when available. For a Tool embedded in a larger repository, a commit gives a historical address and an optional scoped tree identity can explain whether the Tool's own content changed.
|
|
22
|
+
|
|
23
|
+
A source commit alone may not identify a compiled binary or an interpreter's imported code. Supply the actual artifact, entry point, and runtime information when the launcher knows them. Unknown information can remain absent. Reconstructing an activity later from the latest Tool descriptor can incorrectly assign an implementation that was never used.
|
|
24
|
+
|
|
25
|
+
## Live and retained bindings
|
|
26
|
+
|
|
27
|
+
| Binding | Meaning | What makes the exposure usable |
|
|
28
|
+
| --- | --- | --- |
|
|
29
|
+
| Live | Follow the named editable source | The source exists and its current operating instructions can be read |
|
|
30
|
+
| Retained | Use material corresponding to a deliberately selected revision | A caller-supplied checkout or artifact actually matches that selection |
|
|
31
|
+
|
|
32
|
+
A live binding can improve during a project. Its admission-time commit remains historical context. The next activity must describe the implementation it actually uses. A changed source description may require refreshing the host wrapper; a direct source link can make edits visible immediately, subject to the host's loading behavior.
|
|
33
|
+
|
|
34
|
+
A retained selection needs concrete material. Prepare a dedicated checkout or exported artifact through native tools and associate that location. The Kernel must not change the user's active branch to make an exposure resemble a selected historical commit. If matching material is absent, retain the descriptor and report the pending binding.
|
|
35
|
+
|
|
36
|
+
Do not treat these source modes as the exposure mechanism. `wrapper` and `symlink` describe how a host discovers a Tool; `live` and `retained` describe what implementation that discovery refers to.
|
|
37
|
+
|
|
38
|
+
## Host exposure
|
|
39
|
+
|
|
40
|
+
The portable exposure is an ordinary directory with a valid `SKILL.md`. A generated wrapper describes the capability and names the complete source Skill and source directory. The Agent reads those source instructions before using it. Relative references and program paths belong to the source directory.
|
|
41
|
+
|
|
42
|
+
An explicit symlink can expose the source where supported. A Tool that relies on host-specific substitutions may need a matching adapter or direct link. Keep such host behavior in the adapter or source instructions that explain it; the Tool's meaning can remain independent of a particular Agent host.
|
|
43
|
+
|
|
44
|
+
Expose project capabilities only at the selected project destination unless the user explicitly chooses another destination. A name collision is reported as a conflict and resolved by a different `--name` or `--destination`. Existing unrelated Skills and home-directory configuration are not part of Tool admission.
|
|
45
|
+
|
|
46
|
+
Machine-specific absolute source bindings normally stay out of shared Git content. A clone retains the Tool descriptor and sets its own local source with `tool bind` before exposure. Unavailable source on one machine does not retire a capability useful elsewhere.
|
|
47
|
+
|
|
48
|
+
## Export and retirement
|
|
49
|
+
|
|
50
|
+
Export produces a new directory at an explicit destination, containing `tool.json` and `source/`. It can be transferred through Git, npm, a host plugin, or ordinary file transport when the user chooses. Export is a local packaging action and does not imply public publication or installation in another user's environment.
|
|
51
|
+
|
|
52
|
+
Retirement changes the shared descriptor's current availability and removes or disables exposures managed on the invoking host. It preserves source files and earlier Result references. Other hosts reconcile local exposure after receiving the descriptor and explicitly refreshing it. Retirement cannot erase instructions already loaded in a running conversation or stop an executing program.
|
|
53
|
+
|
|
54
|
+
If a capability has been replaced, explain the relationship in its description or later Memory. Earlier activities remain associated with the implementation they used. A new capability can deserve a new identity; an improved implementation of the same purpose can evolve under the existing identity. Make that judgment from project meaning.
|
|
55
|
+
|
|
56
|
+
## Relationships and independent evolution
|
|
57
|
+
|
|
58
|
+
| Association | Meaning |
|
|
59
|
+
| --- | --- |
|
|
60
|
+
| Tool source and revision | The maintained implementation and knowledge |
|
|
61
|
+
| Tool host exposure | A discovery interface on a specific host |
|
|
62
|
+
| Result uses Tool | A capability participated in the retained activity |
|
|
63
|
+
| Tool operates on Model or Data | Domain instructions explain applicable objects and material |
|
|
64
|
+
| Memory explains Tool experience | Lessons, interpretation, and directions for later improvement |
|
|
65
|
+
|
|
66
|
+
Foundational ACCRETE Skills are installed by `accrete-kit` and refreshed explicitly with `npx accrete-kit@latest upgrade`. Domain Tools evolve according to the project's needs. A Tool declares a Kernel requirement when it invokes Kernel operations; an ordinary plotting capability does not need a new version whenever ACCRETE receives a patch release.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Developing useful project capabilities
|
|
2
|
+
|
|
3
|
+
## Retain the part that helps future work
|
|
4
|
+
|
|
5
|
+
A capability often begins during a concrete task: a diagnostic script, a useful interpretation method, a data conversion, or knowledge of a remote environment. Keep exploration flexible. Admit the source when its purpose, implementation, and usage knowledge are valuable to preserve under a project identity.
|
|
6
|
+
|
|
7
|
+
Choose source organization for the work. A small script and its instructions can share a directory in the project. An independently developed numerical utility can remain in its own repository. A cognitive Tool can consist entirely of Markdown. The Kernel needs enough source association to retain and expose the capability; it does not choose the implementation language or development method.
|
|
8
|
+
|
|
9
|
+
Use Scratch for incomplete work. Once admitted, the source remains ordinarily editable. A local improvement need not generate a new Tool ID, a new host exposure, and a new Result automatically. Retain the organizational changes that the project's continuation actually needs.
|
|
10
|
+
|
|
11
|
+
## Write instructions an Agent can use
|
|
12
|
+
|
|
13
|
+
Explain the capability's object and purpose in concrete terms. State which Model, Data, file format, or interpretation problem it applies to. Describe the useful action and the meaning of its outputs. Include the environment and source-relative paths that another worker needs, and identify known limits of the method at their relevant scope.
|
|
14
|
+
|
|
15
|
+
For a Skill interface, put its main trigger in frontmatter `description` and the essential action in `SKILL.md`. Keep detailed command use, input conventions, or scientific interpretation in clearly linked references. Load those references only when the current task needs them. A program's own `--help` can document argument syntax while the Skill explains when the program is useful and what its result means.
|
|
16
|
+
|
|
17
|
+
Domain scripts may perform substantial computation and may call the native ACCRETE CLI to retain their outputs. Keep all object creation, amendment, host exposure, and Memory publication in that CLI boundary. Writing NetCDF, preparing a temporary report, or editing a program remains ordinary work.
|
|
18
|
+
|
|
19
|
+
Avoid converting research into one mandatory sequence. A Tool may help one part of an investigation and leave the next step to the Agent. State assumptions that matter; do not add a required assessment or approval state merely to admit or use the capability.
|
|
20
|
+
|
|
21
|
+
## Preserve source-relative meaning
|
|
22
|
+
|
|
23
|
+
A wrapper might be installed at `.agents/skills/transport-diagnostics/SKILL.md` while source lives at `tools/transport-diagnostics/`. When its source Skill refers to `references/interpretation.md` or `scripts/diagnose.py`, resolve those paths from `tools/transport-diagnostics/`.
|
|
24
|
+
|
|
25
|
+
Read the complete source Skill before following its supporting references. Edit that source. Refresh the generated wrapper when its discovery description or binding changes. The wrapper is a discovery interface, so keeping independent editable copies of its implementation there would make future changes ambiguous.
|
|
26
|
+
|
|
27
|
+
Foundational ACCRETE Skills follow a different packaging arrangement: their small release snapshots are copied as real directories into each enabled host discovery path. Their references travel with each copy. Domain Tools retain their own source and use a wrapper or explicitly chosen direct link.
|
|
28
|
+
|
|
29
|
+
## Describe live changes and retained versions
|
|
30
|
+
|
|
31
|
+
With a live binding, ordinary source edits become the next usable implementation. Record the actual source used by an activity when known. If another worker is already running an earlier implementation, name the change in a handover and let that activity remain associated with its earlier source.
|
|
32
|
+
|
|
33
|
+
With a retained binding, prepare material at the selected revision. A dedicated detached worktree or exported artifact can carry it without disrupting active development. A descriptor that names an old commit does not itself produce that material. Pending exposure is the honest result when it is unavailable.
|
|
34
|
+
|
|
35
|
+
For a compiled Tool, keep its source revision and actual artifact identity distinct when those matter. For an interpreted Tool, capture the entry point and environment the launcher actually selected. Retrospective registration should use available execution information and retain unknowns, rather than borrow the latest descriptor revision.
|
|
36
|
+
|
|
37
|
+
## Use results and experience to evolve the capability
|
|
38
|
+
|
|
39
|
+
A Result retains a meaningful activity and the Tool implementation that participated. Data retains selected outputs or source artifacts. Memory explains the interpretation, a discarded approach, or a lesson for subsequent work. Put stable operating knowledge back into the Tool when it will help future users.
|
|
40
|
+
|
|
41
|
+
For example, a long-running analysis may reveal that one diagnostic is sensitive to a dataset's calendar convention. A later Memory entry can explain that finding in the scope of its observations. Improving the Tool's instructions or implementation helps future use. Earlier Results remain associated with the method and conditions used at the time.
|
|
42
|
+
|
|
43
|
+
Trust earlier retained work within its described scope. A new question, changed input semantics, or a changed implementation can motivate new work. A Kernel update or a host wrapper refresh alone does not require repeating the scientific activity.
|
|
44
|
+
|
|
45
|
+
## Work across hosts and share deliberately
|
|
46
|
+
|
|
47
|
+
Carry shared source and descriptor changes through ordinary version control. Set concrete machine bindings with `tool bind` and run `tool refresh` on each host that needs it. If a source directory is temporarily absent on one machine, the Tool remains part of the project. Use it where the material is available or restore the binding when needed.
|
|
48
|
+
|
|
49
|
+
The CLI reports which interfaces it refreshed. A running Agent can still have earlier instructions in context; subsequent work can read the new source explicitly or use the host's documented refresh behavior. Discovery changes do not replace a running program or retrospectively change an activity.
|
|
50
|
+
|
|
51
|
+
Export to a new local directory with `tool export` when another project should reuse the capability; it writes `tool.json` and `source/`. Review the contents as ordinary packaging work, and keep host-specific absolute paths out of portable guidance. Public distribution remains the user's chosen Git, npm, or plugin action. `tool.json` lets the receiving project understand how its capability relates to the original.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Project context
|
|
2
|
+
|
|
3
|
+
This file belongs to the project. Workspace creation writes it once; template
|
|
4
|
+
upgrades preserve it. Keep it concise and edit it as the work develops.
|
|
5
|
+
|
|
6
|
+
## Purpose and current direction
|
|
7
|
+
|
|
8
|
+
Use the owner's current request to determine the objective, scope, and useful
|
|
9
|
+
deliverable. Preserve consequential choices and remaining questions in project
|
|
10
|
+
Memory when they will help later work. Add a standing project purpose here when
|
|
11
|
+
one has been established.
|
|
12
|
+
|
|
13
|
+
## Working preferences
|
|
14
|
+
|
|
15
|
+
Use native development and scientific tools. Choose direct work or delegation
|
|
16
|
+
according to the task. Retain useful code, capabilities, data descriptions, and
|
|
17
|
+
interpretations without making every temporary action a managed object.
|
|
18
|
+
|
|
19
|
+
## Machines and resources
|
|
20
|
+
|
|
21
|
+
Resolve host paths through `.accrete/local.toml` and domain Tool instructions.
|
|
22
|
+
Place current machine restrictions, resource allocations, and environment
|
|
23
|
+
conventions here when they are relevant. The template imposes no GPU assignment,
|
|
24
|
+
worker count, model family, interpreter, or scientific package version.
|
|
25
|
+
|
|
26
|
+
## Retention and continuation
|
|
27
|
+
|
|
28
|
+
Keep the material needed to continue useful work. Prefer referring to existing
|
|
29
|
+
Results and Memory over repeating an activity merely to reconfirm it. Describe
|
|
30
|
+
changed assumptions explicitly. Before removing a temporary worktree or run
|
|
31
|
+
directory, retain the selected products that future work will use.
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Compute-host example; adapt this host's actual paths and project aliases.
|
|
2
|
+
# local_state.base must be local even when project metadata is on NFS/Lustre.
|
|
3
|
+
host = "gpu-a"
|
|
4
|
+
|
|
5
|
+
[local_state]
|
|
6
|
+
base = "/local/project-name/accrete-state"
|
|
7
|
+
|
|
8
|
+
[paths]
|
|
9
|
+
scratch = "/scratch/project-name/run"
|
|
10
|
+
|
|
11
|
+
[models.target]
|
|
12
|
+
checkout = "/home/project-name/checkouts/target"
|
|
13
|
+
|
|
14
|
+
[models.reference]
|
|
15
|
+
checkout = "/home/project-name/checkouts/reference"
|
|
16
|
+
|
|
17
|
+
[locations.working]
|
|
18
|
+
root = "/scratch/project-name/data"
|
|
19
|
+
|
|
20
|
+
[locations.archive]
|
|
21
|
+
remote = "project-archive"
|
|
22
|
+
prefix = "project-name"
|
|
23
|
+
|
|
24
|
+
# An interpreter binding describes a project-managed environment; it does not
|
|
25
|
+
# cause ACCRETE to create or activate it.
|
|
26
|
+
# [environments.jax-gpu]
|
|
27
|
+
# python = "/home/project-name/envs/jax-current/bin/python"
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Host-local example; adapt paths and aliases, then save as .accrete/local.toml.
|
|
2
|
+
# All paths shown here are illustrative and must name this machine's locations.
|
|
3
|
+
host = "workstation"
|
|
4
|
+
|
|
5
|
+
[local_state]
|
|
6
|
+
base = "/absolute/host-local/accrete-state"
|
|
7
|
+
|
|
8
|
+
[paths]
|
|
9
|
+
scratch = "scratch"
|
|
10
|
+
|
|
11
|
+
# Bind only aliases for Models already registered in this project.
|
|
12
|
+
# [models.target]
|
|
13
|
+
# checkout = "/absolute/checkouts/target"
|
|
14
|
+
|
|
15
|
+
[locations.working]
|
|
16
|
+
root = "/absolute/retained-products"
|
|
17
|
+
|
|
18
|
+
# Native tool credentials remain in their native configuration.
|
|
19
|
+
# [locations.archive]
|
|
20
|
+
# remote = "project-archive"
|
|
21
|
+
# prefix = "project-name"
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# Shared project configuration example. This is not an initialized project.
|
|
2
|
+
# `npx accrete-kit@latest create` generates project_id; preserve it in every clone.
|
|
3
|
+
# See ../docs/configuration.md.
|
|
4
|
+
format = 1
|
|
5
|
+
project_id = "GENERATED_AT_WORKSPACE_CREATION"
|
|
6
|
+
name = "project-name"
|
|
7
|
+
timezone = "UTC"
|
|
8
|
+
|
|
9
|
+
[paths]
|
|
10
|
+
metadata = ".accrete/objects"
|
|
11
|
+
results = "results"
|
|
12
|
+
memory = "memory"
|
|
13
|
+
tool_sources = "tools"
|
|
14
|
+
scratch = "scratch"
|
|
15
|
+
|
|
16
|
+
[locations.working]
|
|
17
|
+
kind = "filesystem"
|
|
18
|
+
purpose = "Current scientific products retained in place"
|
|
19
|
+
|
|
20
|
+
[locations.archive]
|
|
21
|
+
kind = "rclone"
|
|
22
|
+
purpose = "Selected retained products"
|
|
23
|
+
|
|
24
|
+
# Add environment guidance only for an existing project capability.
|
|
25
|
+
# [environments.jax-gpu]
|
|
26
|
+
# description = "Project-maintained execution environment"
|
|
27
|
+
# instructions = "tools/model-execution/references/environment.md"
|