@c4a/context-cli 0.7.10-alpha.2 → 0.7.10
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/cli.js +1154 -754
- package/indexers/bundles/context-code-indexer/references/indexer.md +14 -0
- package/indexers/bundles/context-code-indexer/templates/adapter-integration.md +1 -1
- package/indexers/bundles/context-code-indexer/templates/api-service.md +1 -1
- package/indexers/bundles/context-code-indexer/templates/background-runtime.md +1 -1
- package/indexers/bundles/context-code-indexer/templates/cli-tool.md +1 -1
- package/indexers/bundles/context-code-indexer/templates/component-library.md +4 -4
- package/indexers/bundles/context-code-indexer/templates/contract-source.md +1 -1
- package/indexers/bundles/context-code-indexer/templates/data-sync-reconciliation.md +6 -8
- package/indexers/bundles/context-code-indexer/templates/domain-service.md +1 -1
- package/indexers/bundles/context-code-indexer/templates/monorepo-container.md +1 -1
- package/indexers/bundles/context-code-indexer/templates/sdk-library.md +1 -2
- package/indexers/bundles/context-code-indexer/templates/web-application.md +1 -1
- package/indexers/contracts/profile-contract.json +245 -245
- package/indexers/release-manifest.json +14 -14
- package/package.json +12 -12
- package/parserEntryWorker.js +17 -8
- package/plugins/VERSION +1 -1
- package/plugins/claude/.claude-plugin/plugin.json +1 -1
- package/plugins/claude/commands/context.md +37 -73
- package/plugins/codex/.codex-plugin/plugin.json +2 -2
- package/plugins/codex/skills/context/SKILL.md +37 -73
- package/plugins/cursor/.cursor-plugin/plugin.json +1 -1
- package/plugins/cursor/commands/c4a-context.md +37 -73
- package/plugins/skills/context/SKILL.md +37 -73
- package/plugins/skills/context-code-indexer/references/indexer.md +14 -0
- package/plugins/skills/context-code-indexer/templates/adapter-integration.md +1 -1
- package/plugins/skills/context-code-indexer/templates/api-service.md +1 -1
- package/plugins/skills/context-code-indexer/templates/background-runtime.md +1 -1
- package/plugins/skills/context-code-indexer/templates/cli-tool.md +1 -1
- package/plugins/skills/context-code-indexer/templates/component-library.md +4 -4
- package/plugins/skills/context-code-indexer/templates/contract-source.md +1 -1
- package/plugins/skills/context-code-indexer/templates/data-sync-reconciliation.md +6 -8
- package/plugins/skills/context-code-indexer/templates/domain-service.md +1 -1
- package/plugins/skills/context-code-indexer/templates/monorepo-container.md +1 -1
- package/plugins/skills/context-code-indexer/templates/sdk-library.md +1 -2
- package/plugins/skills/context-code-indexer/templates/web-application.md +1 -1
- package/providers/context/manifest.json +20 -20
- package/providers/context/provider.yaml +1 -1
- package/providers/context/resources/manuals/guides/indexer-provider-and-customization.md +0 -2
- package/providers/context/resources/manuals/guides/knowledge-updates.md +28 -2
- package/providers/context/resources/manuals/guides/workspace-prepare.md +17 -0
- package/providers/context/resources/manuals/reference/project-api.md +37 -17
- package/providers/context/resources/procedures/close-and-build.md +21 -0
- package/providers/context/resources/procedures/knowledge-updates.md +28 -2
- package/providers/context/resources/procedures/production-stage-files.md +14 -0
- package/providers/context/resources/procedures/source-capture-detailed.md +16 -2
- package/providers/context/resources/procedures/work-start-report.md +10 -4
- package/providers/context/resources/procedures/workspace-prepare.md +17 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"protocol": "context.indexer.cli-release-manifest/v1",
|
|
3
3
|
"package": "@c4a/context-cli",
|
|
4
|
-
"version": "0.7.10
|
|
4
|
+
"version": "0.7.10",
|
|
5
5
|
"issuer": "context4ai/context",
|
|
6
6
|
"bundles": [
|
|
7
7
|
{
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"kind": "cli-bundled",
|
|
12
12
|
"locator": "cli-bundled://context/context-code-indexer"
|
|
13
13
|
},
|
|
14
|
-
"integrity": "sha256:
|
|
14
|
+
"integrity": "sha256:c752399ea2ea0252c4805ecdb0f9563c335c345adb303ae73678abd219d5117e",
|
|
15
15
|
"manifest_digest": "sha256:1bb49c2cfaaf1cc847dccd90c5f2bb6465941217a0e0d6053c0a5aeff467a013",
|
|
16
16
|
"files": [
|
|
17
17
|
{
|
|
@@ -124,7 +124,7 @@
|
|
|
124
124
|
},
|
|
125
125
|
{
|
|
126
126
|
"path": "references/indexer.md",
|
|
127
|
-
"digest": "sha256:
|
|
127
|
+
"digest": "sha256:fb778aaeb370fc399ba7a8ac9cfd0a2c596b6bceb42eab602c93f16cc0fc134b"
|
|
128
128
|
},
|
|
129
129
|
{
|
|
130
130
|
"path": "references/metrics.md",
|
|
@@ -148,7 +148,7 @@
|
|
|
148
148
|
},
|
|
149
149
|
{
|
|
150
150
|
"path": "templates/adapter-integration.md",
|
|
151
|
-
"digest": "sha256:
|
|
151
|
+
"digest": "sha256:daf8cab4d9d833e2c6ad1fa2284394450b6bbdcc6c09602696b7b5ea05b204af"
|
|
152
152
|
},
|
|
153
153
|
{
|
|
154
154
|
"path": "templates/api-service-maintenance-guide.md",
|
|
@@ -160,7 +160,7 @@
|
|
|
160
160
|
},
|
|
161
161
|
{
|
|
162
162
|
"path": "templates/api-service.md",
|
|
163
|
-
"digest": "sha256:
|
|
163
|
+
"digest": "sha256:d45aa05476537beffda0b67a459f05a364b4597cc952c57c683191596f68c5b5"
|
|
164
164
|
},
|
|
165
165
|
{
|
|
166
166
|
"path": "templates/articles/c01.md",
|
|
@@ -320,7 +320,7 @@
|
|
|
320
320
|
},
|
|
321
321
|
{
|
|
322
322
|
"path": "templates/background-runtime.md",
|
|
323
|
-
"digest": "sha256:
|
|
323
|
+
"digest": "sha256:4c4aa491c75fcf9ca0188251c17e41ccbc1cdbe50a2608fbb4b9bb9c21728a5b"
|
|
324
324
|
},
|
|
325
325
|
{
|
|
326
326
|
"path": "templates/cli-tool-maintenance-guide.md",
|
|
@@ -336,7 +336,7 @@
|
|
|
336
336
|
},
|
|
337
337
|
{
|
|
338
338
|
"path": "templates/cli-tool.md",
|
|
339
|
-
"digest": "sha256:
|
|
339
|
+
"digest": "sha256:7ebcc0b7d77f5c0847fe251259ccc79c0c2a73bb73512439a1cdf3e4fefd7181"
|
|
340
340
|
},
|
|
341
341
|
{
|
|
342
342
|
"path": "templates/component-library-maintenance-guide.md",
|
|
@@ -352,7 +352,7 @@
|
|
|
352
352
|
},
|
|
353
353
|
{
|
|
354
354
|
"path": "templates/component-library.md",
|
|
355
|
-
"digest": "sha256:
|
|
355
|
+
"digest": "sha256:12b202bd0acb407c934b9b15acfcc429d8bdaa539dd242f4409093736291be88"
|
|
356
356
|
},
|
|
357
357
|
{
|
|
358
358
|
"path": "templates/contract-source-public-api-reference.md",
|
|
@@ -364,7 +364,7 @@
|
|
|
364
364
|
},
|
|
365
365
|
{
|
|
366
366
|
"path": "templates/contract-source.md",
|
|
367
|
-
"digest": "sha256:
|
|
367
|
+
"digest": "sha256:bb13c7b536ef518ed74bbccbb02d795d32c37ecbda6b0f0b8e5ee588f4625ff3"
|
|
368
368
|
},
|
|
369
369
|
{
|
|
370
370
|
"path": "templates/data-sync-reconciliation-maintenance-guide.md",
|
|
@@ -376,7 +376,7 @@
|
|
|
376
376
|
},
|
|
377
377
|
{
|
|
378
378
|
"path": "templates/data-sync-reconciliation.md",
|
|
379
|
-
"digest": "sha256:
|
|
379
|
+
"digest": "sha256:505f3f07c14b3f4dffc2ba301a9b307a707d83e0af055be751935e00114ffc00"
|
|
380
380
|
},
|
|
381
381
|
{
|
|
382
382
|
"path": "templates/derived-generated-source-public-api-reference.md",
|
|
@@ -400,7 +400,7 @@
|
|
|
400
400
|
},
|
|
401
401
|
{
|
|
402
402
|
"path": "templates/domain-service.md",
|
|
403
|
-
"digest": "sha256:
|
|
403
|
+
"digest": "sha256:08a3d725369be798801cc6bed50c7145d1075b961efd26a5ec7422e8bb1eb884"
|
|
404
404
|
},
|
|
405
405
|
{
|
|
406
406
|
"path": "templates/event-consumer-maintenance-guide.md",
|
|
@@ -440,7 +440,7 @@
|
|
|
440
440
|
},
|
|
441
441
|
{
|
|
442
442
|
"path": "templates/monorepo-container.md",
|
|
443
|
-
"digest": "sha256:
|
|
443
|
+
"digest": "sha256:1c53d2f7037cfa65ec65804810eeaa65d2d97542382add387ce4a0ac06aab201"
|
|
444
444
|
},
|
|
445
445
|
{
|
|
446
446
|
"path": "templates/plugin-extension-maintenance-guide.md",
|
|
@@ -472,7 +472,7 @@
|
|
|
472
472
|
},
|
|
473
473
|
{
|
|
474
474
|
"path": "templates/sdk-library.md",
|
|
475
|
-
"digest": "sha256:
|
|
475
|
+
"digest": "sha256:d84865c19c2473e0a6431ddd2123a025c50fdc32362ab05ad082149c51107c9b"
|
|
476
476
|
},
|
|
477
477
|
{
|
|
478
478
|
"path": "templates/storage-repository-maintenance-guide.md",
|
|
@@ -500,7 +500,7 @@
|
|
|
500
500
|
},
|
|
501
501
|
{
|
|
502
502
|
"path": "templates/web-application.md",
|
|
503
|
-
"digest": "sha256:
|
|
503
|
+
"digest": "sha256:2e47c70380bbd254a988bc97578f986c6f602c5e5d2d7d73ffbcb335dd7d9a92"
|
|
504
504
|
},
|
|
505
505
|
{
|
|
506
506
|
"path": "tests/fixtures/chapters.json",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@c4a/context-cli",
|
|
3
|
-
"version": "0.7.10
|
|
3
|
+
"version": "0.7.10",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Local runtime and Agent integration for traceable knowledge production",
|
|
6
6
|
"license": "MIT",
|
|
@@ -24,17 +24,17 @@
|
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@c4a/agent-graph": "0.3.0",
|
|
27
|
-
"@c4a/context": "0.7.10
|
|
28
|
-
"@c4a/extract": "0.7.10
|
|
29
|
-
"@c4a/extract-contract": "0.7.10
|
|
30
|
-
"@c4a/extract-go": "0.7.10
|
|
31
|
-
"@c4a/extract-mdx": "0.7.10
|
|
32
|
-
"@c4a/extract-proto": "0.7.10
|
|
33
|
-
"@c4a/extract-rush": "0.7.10
|
|
34
|
-
"@c4a/extract-sql": "0.7.10
|
|
35
|
-
"@c4a/extract-style": "0.7.10
|
|
36
|
-
"@c4a/extract-thrift": "0.7.10
|
|
37
|
-
"@c4a/extract-ts": "0.7.10
|
|
27
|
+
"@c4a/context": "0.7.10",
|
|
28
|
+
"@c4a/extract": "0.7.10",
|
|
29
|
+
"@c4a/extract-contract": "0.7.10",
|
|
30
|
+
"@c4a/extract-go": "0.7.10",
|
|
31
|
+
"@c4a/extract-mdx": "0.7.10",
|
|
32
|
+
"@c4a/extract-proto": "0.7.10",
|
|
33
|
+
"@c4a/extract-rush": "0.7.10",
|
|
34
|
+
"@c4a/extract-sql": "0.7.10",
|
|
35
|
+
"@c4a/extract-style": "0.7.10",
|
|
36
|
+
"@c4a/extract-thrift": "0.7.10",
|
|
37
|
+
"@c4a/extract-ts": "0.7.10",
|
|
38
38
|
"commander": "^11.0.0",
|
|
39
39
|
"fast-xml-parser": "^5.10.1",
|
|
40
40
|
"handlebars": "^4.7.8",
|
package/parserEntryWorker.js
CHANGED
|
@@ -474,8 +474,16 @@ var init_debugTrace = __esm(() => {
|
|
|
474
474
|
|
|
475
475
|
// src/project/commandReadCache.ts
|
|
476
476
|
import { AsyncLocalStorage as AsyncLocalStorage2 } from "node:async_hooks";
|
|
477
|
-
import { stat } from "node:fs/promises";
|
|
477
|
+
import { readdir, stat } from "node:fs/promises";
|
|
478
478
|
import { resolve as resolve2 } from "node:path";
|
|
479
|
+
async function readCommandDirectory(path) {
|
|
480
|
+
const entries = await reuseCommandFileRead({
|
|
481
|
+
key: "directory-entries",
|
|
482
|
+
paths: [path],
|
|
483
|
+
read: () => readdir(path, { withFileTypes: true })
|
|
484
|
+
});
|
|
485
|
+
return [...entries];
|
|
486
|
+
}
|
|
479
487
|
function withCommandReadCache(action) {
|
|
480
488
|
return commandReads.getStore() === undefined ? commandReads.run(new Map, action) : action();
|
|
481
489
|
}
|
|
@@ -19987,7 +19995,7 @@ var init_sessionMetadata = __esm(() => {
|
|
|
19987
19995
|
});
|
|
19988
19996
|
|
|
19989
19997
|
// ../context/src/managedSources.ts
|
|
19990
|
-
import { readdir, lstat, realpath, readFile as readFile2 } from "node:fs/promises";
|
|
19998
|
+
import { readdir as readdir2, lstat, realpath, readFile as readFile2 } from "node:fs/promises";
|
|
19991
19999
|
import { join as join2, relative as relative2, isAbsolute as isAbsolute3 } from "node:path";
|
|
19992
20000
|
function assertManagedDocumentName(name) {
|
|
19993
20001
|
if (!/^\d{8}\/[^/\\\x00-\x1f\s:#?]+\.md$/u.test(name) || name.includes("/..")) {
|
|
@@ -20024,7 +20032,7 @@ async function discoverManagedDocuments(rootDir, type) {
|
|
|
20024
20032
|
await assertManagedDocumentPath(rootDir, type, "20000101/discovery.md");
|
|
20025
20033
|
let dates;
|
|
20026
20034
|
try {
|
|
20027
|
-
dates = await
|
|
20035
|
+
dates = await readdir2(base, { withFileTypes: true });
|
|
20028
20036
|
} catch (error) {
|
|
20029
20037
|
if (error && typeof error === "object" && "code" in error && error.code === "ENOENT")
|
|
20030
20038
|
return [];
|
|
@@ -20034,7 +20042,7 @@ async function discoverManagedDocuments(rootDir, type) {
|
|
|
20034
20042
|
for (const date of dates.sort((a, b) => a.name.localeCompare(b.name))) {
|
|
20035
20043
|
if (!date.isDirectory() || !/^\d{8}$/u.test(date.name))
|
|
20036
20044
|
continue;
|
|
20037
|
-
for (const file of (await
|
|
20045
|
+
for (const file of (await readdir2(join2(base, date.name), { withFileTypes: true })).sort((a, b) => a.name.localeCompare(b.name))) {
|
|
20038
20046
|
if (!file.isFile() || !file.name.endsWith(".md"))
|
|
20039
20047
|
continue;
|
|
20040
20048
|
const name = `${date.name}/${file.name}`;
|
|
@@ -20559,6 +20567,7 @@ function normalizedVirtualPath(path) {
|
|
|
20559
20567
|
}
|
|
20560
20568
|
function sourceFileSystem(root, tracked, texts, readSource) {
|
|
20561
20569
|
const files = new Set(tracked.map(normalizedVirtualPath));
|
|
20570
|
+
const contents = new Map(Object.entries(texts).map(([path, text2]) => [normalizedVirtualPath(path), text2]));
|
|
20562
20571
|
const directories = new Map([[".", new Set]]);
|
|
20563
20572
|
for (const file of files) {
|
|
20564
20573
|
const parts = file.split("/");
|
|
@@ -20585,7 +20594,7 @@ function sourceFileSystem(root, tracked, texts, readSource) {
|
|
|
20585
20594
|
return {
|
|
20586
20595
|
readFile: async (path) => {
|
|
20587
20596
|
const normalized = assertTrackedFile(path);
|
|
20588
|
-
return
|
|
20597
|
+
return contents.has(normalized) ? contents.get(normalized) : readSource ? readSource(normalized) : readFile5(safeCodeSourcePath(root, normalized), "utf8");
|
|
20589
20598
|
},
|
|
20590
20599
|
async readdir(path) {
|
|
20591
20600
|
const normalized = normalizedVirtualPath(path);
|
|
@@ -20616,7 +20625,7 @@ async function prepareCodeAnalysisInput(input) {
|
|
|
20616
20625
|
path: manifestPath,
|
|
20617
20626
|
content: await fs.readJson(manifestPath)
|
|
20618
20627
|
}, fs) : { entries: [] };
|
|
20619
|
-
return plugin.extractSymbolsInScope(detected.entries, input.scopedPaths, fs);
|
|
20628
|
+
return plugin.extractSymbolsInScope(detected.entries, input.scopedPaths.map(normalizedVirtualPath), fs);
|
|
20620
20629
|
}
|
|
20621
20630
|
if (input.capability === "parser.go") {
|
|
20622
20631
|
const Plugin = input.loadedModule.GoPlugin;
|
|
@@ -20632,8 +20641,8 @@ async function prepareCodeAnalysisInput(input) {
|
|
|
20632
20641
|
content: { raw: manifestContent }
|
|
20633
20642
|
};
|
|
20634
20643
|
const detected = await plugin.detectEntries(manifest, fs);
|
|
20635
|
-
const allowed = new Set(input.scopedPaths);
|
|
20636
|
-
return plugin.extractSymbols(detected.entries.filter((entry) => allowed.has(entry.path)), fs);
|
|
20644
|
+
const allowed = new Set(input.scopedPaths.map(normalizedVirtualPath));
|
|
20645
|
+
return plugin.extractSymbols(detected.entries.filter((entry) => allowed.has(normalizedVirtualPath(entry.path))), fs);
|
|
20637
20646
|
}
|
|
20638
20647
|
if (input.capability === "parser.rush") {
|
|
20639
20648
|
const indexRushWorkspace = input.loadedModule.indexRushWorkspace;
|
package/plugins/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.7.10
|
|
1
|
+
0.7.10
|
|
@@ -93,7 +93,7 @@ present an unresolved draft as the report that authorizes production. The report
|
|
|
93
93
|
or checklist is task guidance, not a source unless the user explicitly asks to
|
|
94
94
|
ingest it. Before the complete report has been presented, do not write a
|
|
95
95
|
source-registration payload, start capture or extraction, configure Indexers,
|
|
96
|
-
or
|
|
96
|
+
or begin knowledge writing. A
|
|
97
97
|
managed-mode choice does not waive this first reading opportunity. After feedback,
|
|
98
98
|
use the exact current Route and include its work-start report reference in the
|
|
99
99
|
source batch payload. Existing workspace updates follow their current update Route
|
|
@@ -119,9 +119,16 @@ Once the activation condition is met, run:
|
|
|
119
119
|
context entry [project-dir] --language <language> --format json
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
-
Use the requested language, otherwise `zh-CN` for Chinese or `en` for
|
|
123
|
-
|
|
124
|
-
|
|
122
|
+
Use the requested output language, otherwise `zh-CN` for Chinese or `en` for
|
|
123
|
+
English; explain actions in the conversation language from the first reply.
|
|
124
|
+
Preserve the user's requested project directory, name and initialization flags
|
|
125
|
+
in the first entry command. Normalize conversational `-dev` to `--dev` (not a
|
|
126
|
+
CLI alias). `--dev` selects the local SDK instead of a registry version;
|
|
127
|
+
`--debug` enables diagnostics independently. Neither implies the other.
|
|
128
|
+
Pass these flags only when requested; add `--managed` only with explicit fully
|
|
129
|
+
managed authorization. For a Chinese request for local SDK, debug and managed
|
|
130
|
+
initialization, use `context entry context/ --dev --debug --language zh-CN
|
|
131
|
+
--managed --format json` as one command, then preserve its returned init flags.
|
|
125
132
|
|
|
126
133
|
Follow the returned `next_action.command`:
|
|
127
134
|
|
|
@@ -280,9 +287,8 @@ none was returned. A phase-local `next_action` is not a workspace Route.
|
|
|
280
287
|
If `next_preparation` fails after committed outcomes, execute its recovery
|
|
281
288
|
without resubmitting accepted work. Stage completion is not workspace completion:
|
|
282
289
|
Changed delivery content must finish Review, close and build through their Routes.
|
|
283
|
-
An empty
|
|
284
|
-
|
|
285
|
-
infer maintenance targets from Composer task names or count.
|
|
290
|
+
An empty result does not prove that existing pages meet a later revision request.
|
|
291
|
+
Register the actual maintenance targets rather than inferring them from task names.
|
|
286
292
|
|
|
287
293
|
When the Graph reports complete, compare the user's original and subsequent
|
|
288
294
|
requests with actual delivered results and registered maintenance targets.
|
|
@@ -292,7 +298,7 @@ conversational requests. Continue already authorized outstanding work through th
|
|
|
292
298
|
normal Context revision/update entry and its fresh Route, respecting existing
|
|
293
299
|
Gates. Do not ask for another "continue" solely because production finished.
|
|
294
300
|
Report a blocker only when a required input, permission or actual entry failure
|
|
295
|
-
prevents progress; do not invent
|
|
301
|
+
prevents progress; do not invent missing work solely because a result is empty.
|
|
296
302
|
|
|
297
303
|
For an authorized end-to-end task, continue while the current Route is actionable
|
|
298
304
|
within that authority. Report batch progress during execution, without ending
|
|
@@ -310,74 +316,32 @@ and when the user declined it. Use the commit guide if the user chooses it.
|
|
|
310
316
|
## When selecting or customizing Indexers
|
|
311
317
|
|
|
312
318
|
Read `context.indexer.provider-guide` at the path supplied by the Route and the
|
|
313
|
-
selected Action's instructions.
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
business replacement. Do not scan caches, run a discovery preflight, or create
|
|
321
|
-
a second enabled-Skill registry.
|
|
322
|
-
|
|
323
|
-
Copy bundled Provider identities from the catalog, even if the same version
|
|
324
|
-
is Host-visible. Read only selected Provider guidance. Keep one primary for an
|
|
325
|
-
existing page; supporting note/session material belongs in its evidence/read
|
|
326
|
-
scope, with compatible extension guidance when needed. Source type alone does
|
|
327
|
-
not require a new page. Submit the selection through the Route's
|
|
328
|
-
`complete-current` contract; the CLI validates, resolves and applies it. Follow
|
|
329
|
-
returned Host-resolution and program Gates without calling low-level commands
|
|
330
|
-
as a parallel workflow. Provider finalization consumes its existing input and
|
|
331
|
-
must not resolve or install the Provider again.
|
|
319
|
+
selected Action's instructions. Select relevant available Skills for the actual
|
|
320
|
+
materials and reader task, respecting disabled Skills and explicit business
|
|
321
|
+
replacements. Record usage through the current planning schema; do not reconstruct
|
|
322
|
+
a separate Provider selection, primary-owner or finalization workflow. Read only
|
|
323
|
+
selected guidance; do not scan plugin caches or create another Skill registry.
|
|
324
|
+
Supporting notes or sessions can enrich an existing article; a different source
|
|
325
|
+
type alone does not require another page.
|
|
332
326
|
|
|
333
327
|
## Progress reporting format
|
|
334
328
|
|
|
335
|
-
For production
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
**[总体进展:已交付
|
|
339
|
-
**[
|
|
340
|
-
|
|
341
|
-
Use
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
do not invent a more specific cause.
|
|
352
|
-
|
|
353
|
-
Keep these scopes separate. A wave or pause target never replaces the overall
|
|
354
|
-
scope. Preserve overall planning across Author, Composer and Review transitions.
|
|
355
|
-
Use each counter's `unit`: task means 项/任务, page means 页. A writing task is
|
|
356
|
-
not automatically one page. A null total means 总数待确定, not zero or the
|
|
357
|
-
number of currently prepared tasks. Revisions can overlap delivered pages;
|
|
358
|
-
do not add wave tasks to delivered pages to invent a page total.
|
|
359
|
-
|
|
360
|
-
Use two bold progress lines. The first combines `overall` and a clearly labelled
|
|
361
|
-
`wave` supplement; the second describes the current action, using `slice` counts
|
|
362
|
-
when available. Internal wave/slice names need not appear in user-facing text. For example, with matching CLI values:
|
|
363
|
-
**[总体进展:已交付 33 页,总页数待确定;规划完成 50/122 项;本轮写作完成 30/30 项]**
|
|
364
|
-
**[当前进展:补充内容检查 0/8 项]**
|
|
365
|
-
|
|
366
|
-
A completion receipt's `submitted_slice` describes the slice just submitted;
|
|
367
|
-
`progress.scopes.slice` can already describe the next Route. Use the former when
|
|
368
|
-
reporting submission success and the latter when announcing the next slice.
|
|
369
|
-
Never combine their numerators and denominators. A null slice means no active
|
|
370
|
-
Agent task slice, not that the workflow is complete. During Review/build, state
|
|
371
|
-
the returned Route action briefly rather than inventing a slice ratio.
|
|
372
|
-
Before counters exist or after task cleanup, describe the known stage and current
|
|
373
|
-
action instead of repeatedly saying counters are unavailable. For example:
|
|
374
|
-
**[总体进展:正在准备知识工作区]**
|
|
375
|
-
**[当前进展:已读取启动清单,正在整理仓库与文档范围]**
|
|
376
|
-
During review or packaging, name that action rather than a nonexistent slice.
|
|
377
|
-
Do not turn the last wave into the overall scope or report delivery as zero.
|
|
378
|
-
Continue authorized work after an update; only the agreed delivery stop or an
|
|
379
|
-
actual unresolved blocker permits stopping. This format governs progress, not
|
|
380
|
-
answers, review findings or necessary questions.
|
|
329
|
+
For production updates, use two bold lines: overall progress, then the current
|
|
330
|
+
action. Use the conversation language. For example, when supported by the receipt:
|
|
331
|
+
|
|
332
|
+
**[总体进展:已交付 10 页;本轮写作已接收 3/5 项]**
|
|
333
|
+
**[当前进展:正在审核本轮文章]**
|
|
334
|
+
|
|
335
|
+
Use counts and their meanings from the current CLI result. Distinguish accepted
|
|
336
|
+
drafts from delivered pages, and the just-submitted subset from remaining work.
|
|
337
|
+
Do not require older overall/wave/slice fields or reconstruct missing totals.
|
|
338
|
+
Tasks and pages are not interchangeable; revisions do not automatically add pages.
|
|
339
|
+
Before counts exist or after cleanup, describe the actual stage without invented
|
|
340
|
+
ratios or reporting previously delivered pages as zero.
|
|
341
|
+
|
|
342
|
+
Continue authorized work after a progress update. End only at the agreed scope,
|
|
343
|
+
a user pause or an actual unresolved blocker. This format applies to production
|
|
344
|
+
progress, not answers, review findings or necessary questions.
|
|
381
345
|
|
|
382
346
|
## Report the actual outcome
|
|
383
347
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "c4a",
|
|
3
|
-
"version": "0.7.10
|
|
3
|
+
"version": "0.7.10",
|
|
4
4
|
"description": "Start or continue a project-local knowledge workspace through one graph-routed entry.",
|
|
5
5
|
"author": { "name": "c4a" },
|
|
6
6
|
"homepage": "https://github.com/context4ai/c4a",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"skills": "./skills/",
|
|
11
11
|
"interface": {
|
|
12
12
|
"displayName": "C4A Context",
|
|
13
|
-
"shortDescription": "Initialize and advance a local, source-linked project knowledge workspace.\nv0.7.10
|
|
13
|
+
"shortDescription": "Initialize and advance a local, source-linked project knowledge workspace.\nv0.7.10",
|
|
14
14
|
"longDescription": "Create a Context workspace and use agent-guided next steps to register sources, run extraction, review candidates, build package outputs, and verify health without silently mutating source repositories.",
|
|
15
15
|
"developerName": "c4a",
|
|
16
16
|
"category": "Productivity",
|
|
@@ -91,7 +91,7 @@ present an unresolved draft as the report that authorizes production. The report
|
|
|
91
91
|
or checklist is task guidance, not a source unless the user explicitly asks to
|
|
92
92
|
ingest it. Before the complete report has been presented, do not write a
|
|
93
93
|
source-registration payload, start capture or extraction, configure Indexers,
|
|
94
|
-
or
|
|
94
|
+
or begin knowledge writing. A
|
|
95
95
|
managed-mode choice does not waive this first reading opportunity. After feedback,
|
|
96
96
|
use the exact current Route and include its work-start report reference in the
|
|
97
97
|
source batch payload. Existing workspace updates follow their current update Route
|
|
@@ -117,9 +117,16 @@ Once the activation condition is met, run:
|
|
|
117
117
|
context entry [project-dir] --language <language> --format json
|
|
118
118
|
```
|
|
119
119
|
|
|
120
|
-
Use the requested language, otherwise `zh-CN` for Chinese or `en` for
|
|
121
|
-
|
|
122
|
-
|
|
120
|
+
Use the requested output language, otherwise `zh-CN` for Chinese or `en` for
|
|
121
|
+
English; explain actions in the conversation language from the first reply.
|
|
122
|
+
Preserve the user's requested project directory, name and initialization flags
|
|
123
|
+
in the first entry command. Normalize conversational `-dev` to `--dev` (not a
|
|
124
|
+
CLI alias). `--dev` selects the local SDK instead of a registry version;
|
|
125
|
+
`--debug` enables diagnostics independently. Neither implies the other.
|
|
126
|
+
Pass these flags only when requested; add `--managed` only with explicit fully
|
|
127
|
+
managed authorization. For a Chinese request for local SDK, debug and managed
|
|
128
|
+
initialization, use `context entry context/ --dev --debug --language zh-CN
|
|
129
|
+
--managed --format json` as one command, then preserve its returned init flags.
|
|
123
130
|
|
|
124
131
|
Follow the returned `next_action.command`:
|
|
125
132
|
|
|
@@ -278,9 +285,8 @@ none was returned. A phase-local `next_action` is not a workspace Route.
|
|
|
278
285
|
If `next_preparation` fails after committed outcomes, execute its recovery
|
|
279
286
|
without resubmitting accepted work. Stage completion is not workspace completion:
|
|
280
287
|
Changed delivery content must finish Review, close and build through their Routes.
|
|
281
|
-
An empty
|
|
282
|
-
|
|
283
|
-
infer maintenance targets from Composer task names or count.
|
|
288
|
+
An empty result does not prove that existing pages meet a later revision request.
|
|
289
|
+
Register the actual maintenance targets rather than inferring them from task names.
|
|
284
290
|
|
|
285
291
|
When the Graph reports complete, compare the user's original and subsequent
|
|
286
292
|
requests with actual delivered results and registered maintenance targets.
|
|
@@ -290,7 +296,7 @@ conversational requests. Continue already authorized outstanding work through th
|
|
|
290
296
|
normal Context revision/update entry and its fresh Route, respecting existing
|
|
291
297
|
Gates. Do not ask for another "continue" solely because production finished.
|
|
292
298
|
Report a blocker only when a required input, permission or actual entry failure
|
|
293
|
-
prevents progress; do not invent
|
|
299
|
+
prevents progress; do not invent missing work solely because a result is empty.
|
|
294
300
|
|
|
295
301
|
For an authorized end-to-end task, continue while the current Route is actionable
|
|
296
302
|
within that authority. Report batch progress during execution, without ending
|
|
@@ -308,74 +314,32 @@ and when the user declined it. Use the commit guide if the user chooses it.
|
|
|
308
314
|
## When selecting or customizing Indexers
|
|
309
315
|
|
|
310
316
|
Read `context.indexer.provider-guide` at the path supplied by the Route and the
|
|
311
|
-
selected Action's instructions.
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
business replacement. Do not scan caches, run a discovery preflight, or create
|
|
319
|
-
a second enabled-Skill registry.
|
|
320
|
-
|
|
321
|
-
Copy bundled Provider identities from the catalog, even if the same version
|
|
322
|
-
is Host-visible. Read only selected Provider guidance. Keep one primary for an
|
|
323
|
-
existing page; supporting note/session material belongs in its evidence/read
|
|
324
|
-
scope, with compatible extension guidance when needed. Source type alone does
|
|
325
|
-
not require a new page. Submit the selection through the Route's
|
|
326
|
-
`complete-current` contract; the CLI validates, resolves and applies it. Follow
|
|
327
|
-
returned Host-resolution and program Gates without calling low-level commands
|
|
328
|
-
as a parallel workflow. Provider finalization consumes its existing input and
|
|
329
|
-
must not resolve or install the Provider again.
|
|
317
|
+
selected Action's instructions. Select relevant available Skills for the actual
|
|
318
|
+
materials and reader task, respecting disabled Skills and explicit business
|
|
319
|
+
replacements. Record usage through the current planning schema; do not reconstruct
|
|
320
|
+
a separate Provider selection, primary-owner or finalization workflow. Read only
|
|
321
|
+
selected guidance; do not scan plugin caches or create another Skill registry.
|
|
322
|
+
Supporting notes or sessions can enrich an existing article; a different source
|
|
323
|
+
type alone does not require another page.
|
|
330
324
|
|
|
331
325
|
## Progress reporting format
|
|
332
326
|
|
|
333
|
-
For production
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
**[总体进展:已交付
|
|
337
|
-
**[
|
|
338
|
-
|
|
339
|
-
Use
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
do not invent a more specific cause.
|
|
350
|
-
|
|
351
|
-
Keep these scopes separate. A wave or pause target never replaces the overall
|
|
352
|
-
scope. Preserve overall planning across Author, Composer and Review transitions.
|
|
353
|
-
Use each counter's `unit`: task means 项/任务, page means 页. A writing task is
|
|
354
|
-
not automatically one page. A null total means 总数待确定, not zero or the
|
|
355
|
-
number of currently prepared tasks. Revisions can overlap delivered pages;
|
|
356
|
-
do not add wave tasks to delivered pages to invent a page total.
|
|
357
|
-
|
|
358
|
-
Use two bold progress lines. The first combines `overall` and a clearly labelled
|
|
359
|
-
`wave` supplement; the second describes the current action, using `slice` counts
|
|
360
|
-
when available. Internal wave/slice names need not appear in user-facing text. For example, with matching CLI values:
|
|
361
|
-
**[总体进展:已交付 33 页,总页数待确定;规划完成 50/122 项;本轮写作完成 30/30 项]**
|
|
362
|
-
**[当前进展:补充内容检查 0/8 项]**
|
|
363
|
-
|
|
364
|
-
A completion receipt's `submitted_slice` describes the slice just submitted;
|
|
365
|
-
`progress.scopes.slice` can already describe the next Route. Use the former when
|
|
366
|
-
reporting submission success and the latter when announcing the next slice.
|
|
367
|
-
Never combine their numerators and denominators. A null slice means no active
|
|
368
|
-
Agent task slice, not that the workflow is complete. During Review/build, state
|
|
369
|
-
the returned Route action briefly rather than inventing a slice ratio.
|
|
370
|
-
Before counters exist or after task cleanup, describe the known stage and current
|
|
371
|
-
action instead of repeatedly saying counters are unavailable. For example:
|
|
372
|
-
**[总体进展:正在准备知识工作区]**
|
|
373
|
-
**[当前进展:已读取启动清单,正在整理仓库与文档范围]**
|
|
374
|
-
During review or packaging, name that action rather than a nonexistent slice.
|
|
375
|
-
Do not turn the last wave into the overall scope or report delivery as zero.
|
|
376
|
-
Continue authorized work after an update; only the agreed delivery stop or an
|
|
377
|
-
actual unresolved blocker permits stopping. This format governs progress, not
|
|
378
|
-
answers, review findings or necessary questions.
|
|
327
|
+
For production updates, use two bold lines: overall progress, then the current
|
|
328
|
+
action. Use the conversation language. For example, when supported by the receipt:
|
|
329
|
+
|
|
330
|
+
**[总体进展:已交付 10 页;本轮写作已接收 3/5 项]**
|
|
331
|
+
**[当前进展:正在审核本轮文章]**
|
|
332
|
+
|
|
333
|
+
Use counts and their meanings from the current CLI result. Distinguish accepted
|
|
334
|
+
drafts from delivered pages, and the just-submitted subset from remaining work.
|
|
335
|
+
Do not require older overall/wave/slice fields or reconstruct missing totals.
|
|
336
|
+
Tasks and pages are not interchangeable; revisions do not automatically add pages.
|
|
337
|
+
Before counts exist or after cleanup, describe the actual stage without invented
|
|
338
|
+
ratios or reporting previously delivered pages as zero.
|
|
339
|
+
|
|
340
|
+
Continue authorized work after a progress update. End only at the agreed scope,
|
|
341
|
+
a user pause or an actual unresolved blocker. This format applies to production
|
|
342
|
+
progress, not answers, review findings or necessary questions.
|
|
379
343
|
|
|
380
344
|
## Report the actual outcome
|
|
381
345
|
|