kokorox 0.1.0__tar.gz
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.
- kokorox-0.1.0/.codex-plugin/plugin.json +20 -0
- kokorox-0.1.0/LICENSE +21 -0
- kokorox-0.1.0/MANIFEST.in +1 -0
- kokorox-0.1.0/PKG-INFO +377 -0
- kokorox-0.1.0/README.md +345 -0
- kokorox-0.1.0/pyproject.toml +127 -0
- kokorox-0.1.0/schemas/v1/build-validation-report.schema.json +111 -0
- kokorox-0.1.0/schemas/v1/character-build-request.schema.json +218 -0
- kokorox-0.1.0/schemas/v1/character-default-config.schema.json +116 -0
- kokorox-0.1.0/schemas/v1/character-draft.schema.json +127 -0
- kokorox-0.1.0/schemas/v1/character-source.schema.json +322 -0
- kokorox-0.1.0/schemas/v1/common.schema.json +28 -0
- kokorox-0.1.0/schemas/v1/compiled-pack.schema.json +280 -0
- kokorox-0.1.0/schemas/v1/installed-pack-registry.schema.json +135 -0
- kokorox-0.1.0/schemas/v1/interaction-event.schema.json +75 -0
- kokorox-0.1.0/schemas/v1/karc-manifest.schema.json +313 -0
- kokorox-0.1.0/schemas/v1/language-policy.schema.json +97 -0
- kokorox-0.1.0/schemas/v1/memory-reference.schema.json +134 -0
- kokorox-0.1.0/schemas/v1/pack-compatibility-report.schema.json +348 -0
- kokorox-0.1.0/schemas/v1/pack-hard-validation-report.schema.json +458 -0
- kokorox-0.1.0/schemas/v1/pack-migration-plan.schema.json +209 -0
- kokorox-0.1.0/schemas/v1/pack-promotion-record.schema.json +151 -0
- kokorox-0.1.0/schemas/v1/pack-publication-readiness-report.schema.json +418 -0
- kokorox-0.1.0/schemas/v1/pack-review-attestation.schema.json +197 -0
- kokorox-0.1.0/schemas/v1/pack-soft-evaluation-input.schema.json +164 -0
- kokorox-0.1.0/schemas/v1/pack-soft-evaluation-report.schema.json +288 -0
- kokorox-0.1.0/schemas/v1/persistence-consent.schema.json +209 -0
- kokorox-0.1.0/schemas/v1/persistence-export.schema.json +587 -0
- kokorox-0.1.0/schemas/v1/persistent-character-state.schema.json +336 -0
- kokorox-0.1.0/schemas/v1/persistent-state-event.schema.json +388 -0
- kokorox-0.1.0/schemas/v1/relationship-state.schema.json +75 -0
- kokorox-0.1.0/schemas/v1/render-plan.schema.json +90 -0
- kokorox-0.1.0/schemas/v1/research-bundle.schema.json +742 -0
- kokorox-0.1.0/schemas/v1/research-claim.schema.json +264 -0
- kokorox-0.1.0/schemas/v1/research-conflict.schema.json +164 -0
- kokorox-0.1.0/schemas/v1/research-coverage.schema.json +130 -0
- kokorox-0.1.0/schemas/v1/research-request.schema.json +176 -0
- kokorox-0.1.0/schemas/v1/research-source-record.schema.json +156 -0
- kokorox-0.1.0/schemas/v1/research-validation-report.schema.json +209 -0
- kokorox-0.1.0/schemas/v1/research-workspace.schema.json +178 -0
- kokorox-0.1.0/schemas/v1/semantic-result.schema.json +74 -0
- kokorox-0.1.0/schemas/v1/session-manifest.schema.json +71 -0
- kokorox-0.1.0/schemas/v1/state-migration-plan.schema.json +180 -0
- kokorox-0.1.0/schemas/v1/validation-result.schema.json +98 -0
- kokorox-0.1.0/setup.cfg +4 -0
- kokorox-0.1.0/skills/authoring-character-packs/SKILL.md +35 -0
- kokorox-0.1.0/skills/authoring-character-packs/agents/claude.yaml +4 -0
- kokorox-0.1.0/skills/authoring-character-packs/agents/codex.yaml +4 -0
- kokorox-0.1.0/skills/authoring-character-packs/agents/copilot.yaml +4 -0
- kokorox-0.1.0/skills/authoring-character-packs/agents/cursor.yaml +4 -0
- kokorox-0.1.0/skills/authoring-character-packs/agents/deepseek.yaml +4 -0
- kokorox-0.1.0/skills/authoring-character-packs/agents/gemini.yaml +4 -0
- kokorox-0.1.0/skills/authoring-character-packs/agents/generic.yaml +4 -0
- kokorox-0.1.0/skills/authoring-character-packs/agents/kimi.yaml +4 -0
- kokorox-0.1.0/skills/authoring-character-packs/agents/openai.yaml +4 -0
- kokorox-0.1.0/skills/authoring-character-packs/agents/qwen.yaml +4 -0
- kokorox-0.1.0/skills/authoring-character-packs/references/authoring-contract.md +79 -0
- kokorox-0.1.0/skills/researching-characters/SKILL.md +42 -0
- kokorox-0.1.0/skills/researching-characters/agents/claude.yaml +4 -0
- kokorox-0.1.0/skills/researching-characters/agents/codex.yaml +4 -0
- kokorox-0.1.0/skills/researching-characters/agents/copilot.yaml +4 -0
- kokorox-0.1.0/skills/researching-characters/agents/cursor.yaml +4 -0
- kokorox-0.1.0/skills/researching-characters/agents/deepseek.yaml +4 -0
- kokorox-0.1.0/skills/researching-characters/agents/gemini.yaml +4 -0
- kokorox-0.1.0/skills/researching-characters/agents/generic.yaml +4 -0
- kokorox-0.1.0/skills/researching-characters/agents/kimi.yaml +4 -0
- kokorox-0.1.0/skills/researching-characters/agents/openai.yaml +4 -0
- kokorox-0.1.0/skills/researching-characters/agents/qwen.yaml +4 -0
- kokorox-0.1.0/skills/researching-characters/references/research-contract.md +98 -0
- kokorox-0.1.0/skills/testing-character-packs/SKILL.md +69 -0
- kokorox-0.1.0/skills/testing-character-packs/agents/claude.yaml +4 -0
- kokorox-0.1.0/skills/testing-character-packs/agents/codex.yaml +4 -0
- kokorox-0.1.0/skills/testing-character-packs/agents/copilot.yaml +4 -0
- kokorox-0.1.0/skills/testing-character-packs/agents/cursor.yaml +4 -0
- kokorox-0.1.0/skills/testing-character-packs/agents/deepseek.yaml +4 -0
- kokorox-0.1.0/skills/testing-character-packs/agents/gemini.yaml +4 -0
- kokorox-0.1.0/skills/testing-character-packs/agents/generic.yaml +4 -0
- kokorox-0.1.0/skills/testing-character-packs/agents/kimi.yaml +4 -0
- kokorox-0.1.0/skills/testing-character-packs/agents/openai.yaml +4 -0
- kokorox-0.1.0/skills/testing-character-packs/agents/qwen.yaml +4 -0
- kokorox-0.1.0/skills/testing-character-packs/references/testing-contract.md +160 -0
- kokorox-0.1.0/skills/using-kokorox/SKILL.md +20 -0
- kokorox-0.1.0/skills/using-kokorox/agents/claude.yaml +4 -0
- kokorox-0.1.0/skills/using-kokorox/agents/codex.yaml +4 -0
- kokorox-0.1.0/skills/using-kokorox/agents/copilot.yaml +4 -0
- kokorox-0.1.0/skills/using-kokorox/agents/cursor.yaml +4 -0
- kokorox-0.1.0/skills/using-kokorox/agents/deepseek.yaml +4 -0
- kokorox-0.1.0/skills/using-kokorox/agents/gemini.yaml +4 -0
- kokorox-0.1.0/skills/using-kokorox/agents/generic.yaml +4 -0
- kokorox-0.1.0/skills/using-kokorox/agents/kimi.yaml +4 -0
- kokorox-0.1.0/skills/using-kokorox/agents/openai.yaml +4 -0
- kokorox-0.1.0/skills/using-kokorox/agents/qwen.yaml +4 -0
- kokorox-0.1.0/skills/using-kokorox/references/runtime-contract.md +150 -0
- kokorox-0.1.0/src/kokorox/__init__.py +1 -0
- kokorox-0.1.0/src/kokorox/authoring/__init__.py +5 -0
- kokorox-0.1.0/src/kokorox/authoring/drafts.py +69 -0
- kokorox-0.1.0/src/kokorox/authoring/requests.py +31 -0
- kokorox-0.1.0/src/kokorox/authoring/storage.py +1344 -0
- kokorox-0.1.0/src/kokorox/authoring/validation.py +594 -0
- kokorox-0.1.0/src/kokorox/cli.py +2282 -0
- kokorox-0.1.0/src/kokorox/config.py +86 -0
- kokorox-0.1.0/src/kokorox/distribution/__init__.py +85 -0
- kokorox-0.1.0/src/kokorox/distribution/archive.py +1094 -0
- kokorox-0.1.0/src/kokorox/distribution/compatibility.py +633 -0
- kokorox-0.1.0/src/kokorox/distribution/defaults.py +1846 -0
- kokorox-0.1.0/src/kokorox/distribution/installer.py +4007 -0
- kokorox-0.1.0/src/kokorox/distribution/migrations.py +908 -0
- kokorox-0.1.0/src/kokorox/distribution/registry.py +1102 -0
- kokorox-0.1.0/src/kokorox/distribution/suite.py +1816 -0
- kokorox-0.1.0/src/kokorox/errors.py +26 -0
- kokorox-0.1.0/src/kokorox/json_compat.py +77 -0
- kokorox-0.1.0/src/kokorox/language_tags.py +59 -0
- kokorox-0.1.0/src/kokorox/packs/__init__.py +5 -0
- kokorox-0.1.0/src/kokorox/packs/compiler.py +143 -0
- kokorox-0.1.0/src/kokorox/packs/loader.py +391 -0
- kokorox-0.1.0/src/kokorox/packs/resolver.py +78 -0
- kokorox-0.1.0/src/kokorox/packs/security.py +203 -0
- kokorox-0.1.0/src/kokorox/persistence/__init__.py +51 -0
- kokorox-0.1.0/src/kokorox/persistence/_storage.py +1829 -0
- kokorox-0.1.0/src/kokorox/persistence/consent.py +748 -0
- kokorox-0.1.0/src/kokorox/persistence/memory.py +1143 -0
- kokorox-0.1.0/src/kokorox/persistence/migrations.py +1494 -0
- kokorox-0.1.0/src/kokorox/persistence/state.py +3215 -0
- kokorox-0.1.0/src/kokorox/policy/__init__.py +6 -0
- kokorox-0.1.0/src/kokorox/policy/compiler.py +162 -0
- kokorox-0.1.0/src/kokorox/policy/resolver.py +58 -0
- kokorox-0.1.0/src/kokorox/py.typed +0 -0
- kokorox-0.1.0/src/kokorox/research/__init__.py +25 -0
- kokorox-0.1.0/src/kokorox/research/bundles.py +87 -0
- kokorox-0.1.0/src/kokorox/research/requests.py +58 -0
- kokorox-0.1.0/src/kokorox/research/storage.py +1004 -0
- kokorox-0.1.0/src/kokorox/research/validation.py +618 -0
- kokorox-0.1.0/src/kokorox/research/workspace.py +508 -0
- kokorox-0.1.0/src/kokorox/runtime/__init__.py +5 -0
- kokorox-0.1.0/src/kokorox/runtime/context.py +411 -0
- kokorox-0.1.0/src/kokorox/runtime/planning.py +179 -0
- kokorox-0.1.0/src/kokorox/runtime/validation.py +774 -0
- kokorox-0.1.0/src/kokorox/schemas.py +127 -0
- kokorox-0.1.0/src/kokorox/standalone_cli.py +1559 -0
- kokorox-0.1.0/src/kokorox/state/__init__.py +5 -0
- kokorox-0.1.0/src/kokorox/state/store.py +1423 -0
- kokorox-0.1.0/src/kokorox/state/transitions.py +133 -0
- kokorox-0.1.0/src/kokorox/testing/__init__.py +36 -0
- kokorox-0.1.0/src/kokorox/testing/corpus.py +643 -0
- kokorox-0.1.0/src/kokorox/testing/hard.py +1610 -0
- kokorox-0.1.0/src/kokorox/testing/promotion.py +405 -0
- kokorox-0.1.0/src/kokorox/testing/publication.py +1386 -0
- kokorox-0.1.0/src/kokorox/testing/soft.py +356 -0
- kokorox-0.1.0/src/kokorox/testing/storage.py +1819 -0
- kokorox-0.1.0/src/kokorox.egg-info/PKG-INFO +377 -0
- kokorox-0.1.0/src/kokorox.egg-info/SOURCES.txt +153 -0
- kokorox-0.1.0/src/kokorox.egg-info/dependency_links.txt +1 -0
- kokorox-0.1.0/src/kokorox.egg-info/entry_points.txt +2 -0
- kokorox-0.1.0/src/kokorox.egg-info/requires.txt +9 -0
- kokorox-0.1.0/src/kokorox.egg-info/top_level.txt +1 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "kokorox",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Build, test, install, and use KokoroX character Skills.",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "KokoroX"
|
|
7
|
+
},
|
|
8
|
+
"skills": "./skills/",
|
|
9
|
+
"interface": {
|
|
10
|
+
"displayName": "KokoroX",
|
|
11
|
+
"shortDescription": "Use the four KokoroX character Skills in Codex.",
|
|
12
|
+
"longDescription": "KokoroX adds local Skills for character use, authoring, research, and release testing.",
|
|
13
|
+
"developerName": "KokoroX",
|
|
14
|
+
"category": "Productivity",
|
|
15
|
+
"capabilities": [
|
|
16
|
+
"Skills"
|
|
17
|
+
],
|
|
18
|
+
"defaultPrompt": "Help me choose the right KokoroX Skill."
|
|
19
|
+
}
|
|
20
|
+
}
|
kokorox-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 HAYASAKA7
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
include .codex-plugin/plugin.json
|
kokorox-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,377 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: kokorox
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: A multilingual character-persona runtime for AI agents
|
|
5
|
+
Author: HAYASAKA7
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/HAYASAKA7/KokoroX
|
|
8
|
+
Project-URL: Repository, https://github.com/HAYASAKA7/KokoroX
|
|
9
|
+
Project-URL: Issues, https://github.com/HAYASAKA7/KokoroX/issues
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Intended Audience :: Developers
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
18
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
19
|
+
Classifier: Typing :: Typed
|
|
20
|
+
Requires-Python: >=3.11
|
|
21
|
+
Description-Content-Type: text/markdown
|
|
22
|
+
License-File: LICENSE
|
|
23
|
+
Requires-Dist: PyYAML<7,>=6
|
|
24
|
+
Requires-Dist: jsonschema<5,>=4
|
|
25
|
+
Provides-Extra: dev
|
|
26
|
+
Requires-Dist: pytest<9,>=8; extra == "dev"
|
|
27
|
+
Requires-Dist: build<2,>=1; extra == "dev"
|
|
28
|
+
Requires-Dist: pytest-cov<7,>=5; extra == "dev"
|
|
29
|
+
Requires-Dist: pytest-xdist<4,>=3; extra == "dev"
|
|
30
|
+
Requires-Dist: setuptools>=77; extra == "dev"
|
|
31
|
+
Dynamic: license-file
|
|
32
|
+
|
|
33
|
+
# KokoroX
|
|
34
|
+
|
|
35
|
+
KokoroX is a local-first multilingual character-persona runtime and Agent
|
|
36
|
+
Skill suite. It provides deterministic Character Packs, explicit session
|
|
37
|
+
activation, multilingual render planning, release gates, scoped installation,
|
|
38
|
+
opt-in persistence, and four data-safe Agent Skills.
|
|
39
|
+
|
|
40
|
+
The design revision is `0.3.0`; this is not a product version.
|
|
41
|
+
|
|
42
|
+
## Install the wheel and all four Skills
|
|
43
|
+
|
|
44
|
+
Examples use macOS (zsh/bash). Product data and temporary files live under a
|
|
45
|
+
directory you control, set through `KOKOROX_DATA_DIR`. From a source checkout,
|
|
46
|
+
this builds and installs a wheel; if you already have one, skip the build step
|
|
47
|
+
and point `wheel` at that file.
|
|
48
|
+
|
|
49
|
+
The suite is cross-platform. On Windows, use PowerShell syntax and a path such
|
|
50
|
+
as `D:\kokorox` in place of `$HOME/.kokorox`; every `kokorox` command is
|
|
51
|
+
otherwise identical.
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
export KOKOROX_DATA_DIR="$HOME/.kokorox/data"
|
|
55
|
+
export TMPDIR="$HOME/.kokorox/temp"
|
|
56
|
+
mkdir -p "$KOKOROX_DATA_DIR" "$TMPDIR"
|
|
57
|
+
|
|
58
|
+
python3 -m build --no-isolation --outdir "$HOME/.kokorox/build"
|
|
59
|
+
wheel=$(ls "$HOME/.kokorox/build"/*.whl | head -1)
|
|
60
|
+
python3 -m pip install "$wheel"
|
|
61
|
+
kokorox suite install --scope user --json
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The user-scope command installs these four Skills into the host's user Skill
|
|
65
|
+
root and is the recommended global-first choice for most users:
|
|
66
|
+
|
|
67
|
+
- `using-kokorox` for explicit character use;
|
|
68
|
+
- `authoring-character-packs` for private source-pack authoring;
|
|
69
|
+
- `researching-characters` for evidence-bound named-character research; and
|
|
70
|
+
- `testing-character-packs` for test, review, promotion, and readiness gates.
|
|
71
|
+
|
|
72
|
+
Use a repository scope when only one workspace should discover the suite:
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
repo="$HOME/Projects/consumer"
|
|
76
|
+
kokorox suite install --scope repo --repo "$repo" --json
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Add `--dry-run` to preview either installation. Repeating an identical install
|
|
80
|
+
returns four `unchanged` actions; a different pre-existing Skill fails closed
|
|
81
|
+
instead of being overwritten. The wheel carries the Skill files as package
|
|
82
|
+
data, but `pip install` alone does not copy them into a host Skill root.
|
|
83
|
+
|
|
84
|
+
## Use the suite in many agents
|
|
85
|
+
|
|
86
|
+
The suite is agent-neutral. It installs into the vendor-neutral
|
|
87
|
+
`.agents/skills` root rather than any single vendor's directory, so several
|
|
88
|
+
agents can discover the same installation:
|
|
89
|
+
|
|
90
|
+
- user scope installs to `~/.agents/skills`;
|
|
91
|
+
- repository scope installs to `<repo>/.agents/skills`.
|
|
92
|
+
|
|
93
|
+
To install into a specific agent's own Skill directory, pass `--skills-root`:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
kokorox suite install --skills-root "$HOME/Library/Application Support/some-agent/skills" --json
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Each Skill also ships a per-agent interface profile under `agents/<agent>.yaml`
|
|
100
|
+
carrying that host's `display_name`, `short_description`, and `default_prompt`.
|
|
101
|
+
Profiles are provided for `openai`, `claude`, `codex`, `cursor`, `gemini`,
|
|
102
|
+
`copilot`, `kimi`, `deepseek`, `qwen`, and a `generic` fallback. A host that
|
|
103
|
+
reads its profile gets a ready-made invocation prompt; a host that ignores them
|
|
104
|
+
is unaffected.
|
|
105
|
+
|
|
106
|
+
An agent that cannot load Skills at all can still drive the entire suite through
|
|
107
|
+
the `kokorox` CLI, which exposes every documented operation and depends on no
|
|
108
|
+
model provider.
|
|
109
|
+
|
|
110
|
+
## Global-first Character Pack operation
|
|
111
|
+
|
|
112
|
+
The following uses a verified `rin-aster.karc` archive as an example. Repository
|
|
113
|
+
fixtures and Rin Aster paths are examples, not templates for a new character.
|
|
114
|
+
Compatibility inspection is read-only; install and default selection are
|
|
115
|
+
explicit mutations but do not activate the character.
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
archive="$HOME/.kokorox/rin-aster.karc"
|
|
119
|
+
kokorox pack compatibility "$archive" --json
|
|
120
|
+
kokorox pack install "$archive" --scope global --json
|
|
121
|
+
kokorox pack list --scope global --json
|
|
122
|
+
kokorox config default set --character rin-aster --scope global --json
|
|
123
|
+
kokorox config default show --scope global --json
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Installation and default selection never activate a character. Activation
|
|
127
|
+
starts only at an explicit session boundary, and ending the session is equally
|
|
128
|
+
explicit:
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
kokorox session show --json
|
|
132
|
+
kokorox session start --session demo --json
|
|
133
|
+
kokorox runtime context --session demo --locale zh-CN --scenario debugging --json
|
|
134
|
+
kokorox session end --session demo --json
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
An explicit compiled path still has highest precedence. Without one, a session
|
|
138
|
+
started with `--workspace` resolves that workspace's default, then falls back
|
|
139
|
+
to the global default. A workspace default overrides the global default only
|
|
140
|
+
for that workspace:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
repo="$HOME/Projects/consumer"
|
|
144
|
+
kokorox pack install "$archive" --scope workspace --workspace "$repo" --json
|
|
145
|
+
kokorox config default set --character rin-aster --scope workspace \
|
|
146
|
+
--workspace "$repo" --json
|
|
147
|
+
kokorox session start --session workspace-demo --workspace "$repo" --json
|
|
148
|
+
kokorox session end --session workspace-demo --json
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Merely installing, selecting, inspecting, or discussing a Character Pack never
|
|
152
|
+
starts a persona session. Use `using-kokorox` only after explicit activation
|
|
153
|
+
or when the user explicitly requests a named installed character for the
|
|
154
|
+
current host session.
|
|
155
|
+
|
|
156
|
+
## Consent, state, and memory
|
|
157
|
+
|
|
158
|
+
Session state remains session-local by default. Global or workspace persistence
|
|
159
|
+
requires explicit consent for `relationship_state`, `mood_state`, and
|
|
160
|
+
`memory_references`. Each permission is independent; granting one never grants
|
|
161
|
+
another, and revocation blocks future writes without silently deleting data.
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
kokorox consent grant --character rin-aster --scope global \
|
|
165
|
+
--permissions relationship_state,mood_state,memory_references --json
|
|
166
|
+
kokorox consent show --character rin-aster --scope global --json
|
|
167
|
+
|
|
168
|
+
state_export="$HOME/.kokorox/exports/rin-state.json"
|
|
169
|
+
kokorox state export --character rin-aster --out "$state_export" --json
|
|
170
|
+
kokorox state reset --character rin-aster --part all --dry-run --json
|
|
171
|
+
kokorox state reset --character rin-aster --part all --json
|
|
172
|
+
kokorox consent revoke --character rin-aster --json
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
Memory commands accept host-owned memory IDs plus an explicitly approved,
|
|
176
|
+
bounded summary file. KokoroX stores only that reference and summary; it does
|
|
177
|
+
not harvest conversation transcripts, infer memories from chat, or copy host
|
|
178
|
+
memory contents. Preview removal with `memory remove --dry-run` before applying
|
|
179
|
+
it.
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
summary_file="$HOME/.kokorox/approved-memory-summary.json"
|
|
183
|
+
printf '%s' '{"summary":"Prefers concise explanations.","localized_summaries":{"en-US":"Prefers concise explanations."}}' > "$summary_file"
|
|
184
|
+
kokorox memory add --character rin-aster --host-id host-memory-01 \
|
|
185
|
+
--summary-file "$summary_file" --json
|
|
186
|
+
kokorox memory list --character rin-aster --json
|
|
187
|
+
kokorox memory remove --character rin-aster --host-id host-memory-01 \
|
|
188
|
+
--dry-run --json
|
|
189
|
+
kokorox memory remove --character rin-aster --host-id host-memory-01 --json
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Before removing a pack, end active sessions, clear defaults, reset or remove
|
|
193
|
+
retained state, remove retained memory references, and revoke active consent.
|
|
194
|
+
Reset is consent-gated, so preview and apply it before revocation. Then preview
|
|
195
|
+
the exact version removal before applying it:
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
kokorox session end --session demo --json
|
|
199
|
+
kokorox config default clear --scope global --json
|
|
200
|
+
kokorox pack remove rin-aster --version 1.0.0 --dry-run --json
|
|
201
|
+
kokorox pack remove rin-aster --version 1.0.0 --json
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Archives, migration, publication, and recovery
|
|
205
|
+
|
|
206
|
+
For identical canonical release inputs, private `.karc` output is byte-for-byte
|
|
207
|
+
deterministic. A local private archive is marked `unsigned_local`; this records
|
|
208
|
+
its trust boundary and is not a remote signature or publication claim. Inspect
|
|
209
|
+
an archive before installation:
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
kokorox pack compatibility "$archive" --json
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
Migration is explicit, bounded, and never an automatic compatibility shim.
|
|
216
|
+
It accepts only a supported source/target format path, writes a new archive,
|
|
217
|
+
and never overwrites the input. Preview first:
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
migrated="$HOME/.kokorox/rin-aster-v1.karc"
|
|
221
|
+
kokorox pack migrate "$archive" --to-format 1.0.0 --out "$migrated" \
|
|
222
|
+
--dry-run --json
|
|
223
|
+
kokorox pack migrate "$archive" --to-format 1.0.0 --out "$migrated" --json
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
Private readiness and public-candidate readiness are local evidence reports.
|
|
227
|
+
Readiness does not publish anything or grant distribution rights. Public
|
|
228
|
+
readiness additionally requires an explicit applicable rights/compliance
|
|
229
|
+
attestation; self-assertion cannot unlock it.
|
|
230
|
+
|
|
231
|
+
Install, remove, migration, default, persistence, and suite operations use
|
|
232
|
+
bounded locks, canonical inputs, and atomic publication. Conflicts fail closed;
|
|
233
|
+
the command does not guess which concurrent value should win. Interrupted
|
|
234
|
+
install/removal transactions leave an identity-bound journal, and recovery is
|
|
235
|
+
automatic on the next matching install or removal operation. If recovery
|
|
236
|
+
cannot prove every retained byte and path, it returns a stable recovery error
|
|
237
|
+
and deletes nothing unverified. Keep backups of the data root before migration
|
|
238
|
+
or destructive reset; copy it only while KokoroX is inactive so the backup is
|
|
239
|
+
internally consistent.
|
|
240
|
+
|
|
241
|
+
## Author a private inactive draft with the repository-local Skill
|
|
242
|
+
|
|
243
|
+
Milestone 6 authoring turns a wholly original brief or a private user dossier into a deterministic Character Draft. The result is always private, inactive, and fixed at `build_status: draft` with `activation_allowed: false`. It is not researched, externally verified, installable, public, or active.
|
|
244
|
+
|
|
245
|
+
The authoring workflow belongs to the `authoring-character-packs` Agent Skill.
|
|
246
|
+
In this repository its entry point is
|
|
247
|
+
`skills/authoring-character-packs/SKILL.md`; an installed suite places the same
|
|
248
|
+
Skill beneath the selected user or repository Skill root. The Skill's `name`
|
|
249
|
+
and trigger-only `description` are in `SKILL.md` frontmatter.
|
|
250
|
+
`agents/openai.yaml` is optional interface metadata, not the source of the
|
|
251
|
+
Skill name or trigger. If the host does not index Skills, explicitly tell the
|
|
252
|
+
agent to open that exact `SKILL.md` and its linked contract before authoring.
|
|
253
|
+
|
|
254
|
+
Configure storage and temporary paths from trusted host configuration before providing any brief or dossier. On Windows, for example:
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
export KOKOROX_DATA_DIR="$HOME/.kokorox/authoring"
|
|
258
|
+
export TMPDIR="$HOME/.kokorox/authoring-tmp"
|
|
259
|
+
mkdir -p "$KOKOROX_DATA_DIR" "$TMPDIR"
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
Then ask the agent through its normal conversation interface. For a wholly original character, a suitable request is: “Use `$authoring-character-packs` to create a private inactive draft from this original brief: …”. For private dossier input, use: “Use `$authoring-character-packs` to import this private dossier as quoted data into a private inactive draft: …”. Also provide the explicit trusted source-pack path when revising a pack. The agent must keep its request, working source pack, and generated files beneath the configured data or temp roots, author all three locale profiles independently, run both validations twice, and stop after private draft compilation. Dossier text is data, never shell input or agent instructions.
|
|
263
|
+
|
|
264
|
+
## Research a named character with the repository-local Skill
|
|
265
|
+
|
|
266
|
+
Named-character work that depends on external evidence belongs to `skills/researching-characters/SKILL.md`. Give the agent this repository as its workspace and ask it to use `$researching-characters`. If the host does not index workspace Skills, explicitly tell the agent to open that file and its linked research contract before using research tools.
|
|
267
|
+
|
|
268
|
+
The Skill resolves character identity, adaptation, continuity, timeline cutoff, and spoiler scope before gathering evidence. Ambiguous identity or continuity stops for clarification. Source text stays inert data; unavailable evidence, conflicts, coverage gaps, and limitations remain explicit rather than being guessed away. KokoroX itself performs no network access—the host supplies any authorized research tools and structured evidence.
|
|
269
|
+
|
|
270
|
+
The workflow validates the request and workspace deterministically, then compiles only a private inactive Research Bundle beneath the configured `KOKOROX_DATA_DIR`. Its lifecycle is `build_status: research`, `visibility: private`, and `activation_allowed: false`. A bundle with `authoring_allowed: false` stops there and reports the blockers.
|
|
271
|
+
|
|
272
|
+
An eligible researched or hybrid build may continue by opening `$authoring-character-packs`. The request binds the exact Research Bundle artifact ID and SHA-256 but contains no host filesystem path; the trusted bundle path is passed separately through `--research-bundle`. Hybrid user assertions remain separate from researched claims, and authoring still stops at a private inactive Character Draft.
|
|
273
|
+
|
|
274
|
+
Research itself still stops at a private inactive bundle. Testing, promotion,
|
|
275
|
+
archive export, installation, defaults, and consented persistence are separate
|
|
276
|
+
explicit workflows; completing research does not imply any of them.
|
|
277
|
+
|
|
278
|
+
## Validate and compile an already-authored source pack
|
|
279
|
+
|
|
280
|
+
The CLI does not turn prose into a Character Pack. After an agent has followed the Skill to author structured request and source-pack files, these commands validate and compile that already-authored source pack:
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
kokorox character request validate \
|
|
284
|
+
--input tests/fixtures/authoring/original-request.json --json
|
|
285
|
+
kokorox character draft validate \
|
|
286
|
+
--request tests/fixtures/authoring/original-request.json \
|
|
287
|
+
--pack characters/original/rin-aster --json
|
|
288
|
+
kokorox character draft compile \
|
|
289
|
+
--request tests/fixtures/authoring/original-request.json \
|
|
290
|
+
--pack characters/original/rin-aster --json
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
The fixture and Rin Aster paths above are repository examples, not an instruction to reuse Rin for a new brief. The Windows example uses `$HOME/.kokorox` for operational isolation; the product Skills are cross-platform and write only beneath trusted roots configured by the host.
|
|
294
|
+
|
|
295
|
+
## Test, review, and promote a Character Pack
|
|
296
|
+
|
|
297
|
+
Release commands consume structured artifacts only. They do not run
|
|
298
|
+
an evaluator, browse, publish to a network, activate a character, or infer a
|
|
299
|
+
human review. `pack test` performs the deterministic hard gates; `soft-eval`
|
|
300
|
+
aggregates an already prepared evaluator artifact; `promote` records explicit
|
|
301
|
+
reviewed and verified transitions; and `publication-check` produces an advisory
|
|
302
|
+
local readiness report.
|
|
303
|
+
|
|
304
|
+
For agent-led validation, evaluation, review, promotion, or
|
|
305
|
+
publication-readiness work, give the agent this repository and ask it to use
|
|
306
|
+
`$testing-character-packs`, whose entry point is
|
|
307
|
+
`skills/testing-character-packs/SKILL.md`. It does not trigger
|
|
308
|
+
for ordinary character use, casual design discussion, authoring, or research.
|
|
309
|
+
The workflow is private by default, does not install a pack, does not activate
|
|
310
|
+
a character, and does not publish or perform network I/O. Installation,
|
|
311
|
+
defaults, consented persistence, memory references, and Skill registration are
|
|
312
|
+
separate explicit administration commands documented above.
|
|
313
|
+
|
|
314
|
+
```text
|
|
315
|
+
kokorox pack test <source-dir> --request <request.json> \
|
|
316
|
+
[--research-bundle <published-bundle-dir>] \
|
|
317
|
+
--out <hard-report.json> --json
|
|
318
|
+
kokorox pack soft-eval <input.json> --out <soft-report.json> --json
|
|
319
|
+
kokorox pack promote <source-dir> --target reviewed \
|
|
320
|
+
--promotion-id <id> --request <request.json> \
|
|
321
|
+
--hard-report <report.json> --review <attestation.json> \
|
|
322
|
+
[--research-bundle <published-bundle-dir>] \
|
|
323
|
+
--out <promotion.json> --json
|
|
324
|
+
kokorox pack promote <source-dir> --target verified \
|
|
325
|
+
--promotion-id <id> --request <request.json> \
|
|
326
|
+
--hard-report <report.json> --review <attestation.json> \
|
|
327
|
+
--previous <reviewed.json> --soft-input <input.json> \
|
|
328
|
+
--soft-report <report.json> \
|
|
329
|
+
[--research-bundle <published-bundle-dir>] \
|
|
330
|
+
--out <promotion.json> --json
|
|
331
|
+
kokorox pack publication-check <source-dir> --promotion <verified.json> \
|
|
332
|
+
--request <request.json> --hard-report <report.json> \
|
|
333
|
+
--review <attestation.json> --previous <reviewed.json> \
|
|
334
|
+
--soft-input <input.json> --soft-report <report.json> \
|
|
335
|
+
[--research-bundle <published-bundle-dir>] \
|
|
336
|
+
--visibility <private|public_candidate> \
|
|
337
|
+
[--compliance <attestation.json>] --out <report.json> --json
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
All `--out` values are relative to `KOKOROX_DATA_DIR/reports`, unless an
|
|
341
|
+
absolute path beneath that same reports root is supplied. Report writes are
|
|
342
|
+
canonical and atomic. A promotion output must name its exact immutable path:
|
|
343
|
+
`promotions/<character-id>/<promotion-id>/promotion.json`. Output escapes,
|
|
344
|
+
redirects, input aliases, and source-pack aliases are rejected. Every command
|
|
345
|
+
prints one JSON envelope to stdout and keeps stderr empty. Output is UTF-8
|
|
346
|
+
on every platform, whatever the console's codepage is; decode it as UTF-8.
|
|
347
|
+
`ok: true` means the deterministic command completed; callers must still check
|
|
348
|
+
`passed`, `ready_for_private_export`, or `ready_for_publication` before the next
|
|
349
|
+
stage.
|
|
350
|
+
|
|
351
|
+
## Running the test suite
|
|
352
|
+
|
|
353
|
+
The package uses a `src` layout, so the tests need it on the import path.
|
|
354
|
+
Keep temporary files off `C:` as usual.
|
|
355
|
+
|
|
356
|
+
```bash
|
|
357
|
+
export PYTHONPATH="src"; export TMPDIR="$HOME/.kokorox"; python -m pytest tests
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
The suite is large (about 3,100 tests). Run it in parallel - it is roughly
|
|
361
|
+
3.6x faster end to end and the tests are isolated, so results are unchanged:
|
|
362
|
+
|
|
363
|
+
```bash
|
|
364
|
+
python -m pytest tests -n auto --dist load
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
Parallelism is deliberately not enabled by default: spawning a worker per
|
|
368
|
+
core makes a single-test run slower, which matters more during development.
|
|
369
|
+
|
|
370
|
+
Coverage is measured against a minimum threshold:
|
|
371
|
+
|
|
372
|
+
```bash
|
|
373
|
+
python -m pytest tests -n auto --dist load --cov
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
Run the suites separately if the machine is short on memory; combine their
|
|
377
|
+
coverage with `--cov-append` and a shared `COVERAGE_FILE`.
|