neoctl 0.2.38 → 0.2.39
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/dist/context/context-manager.js +2 -1
- package/dist/context/context-manager.js.map +1 -1
- package/dist/context/prompt-config.test.js +4 -0
- package/dist/context/prompt-config.test.js.map +1 -1
- package/dist/context/prompts.d.ts +3 -0
- package/dist/context/prompts.js +10 -4
- package/dist/context/prompts.js.map +1 -1
- package/dist/context/system.md +1 -1
- package/dist/core/query-engine.d.ts +5 -2
- package/dist/core/query-engine.js +31 -13
- package/dist/core/query-engine.js.map +1 -1
- package/dist/core/query.js +2 -2
- package/dist/core/query.js.map +1 -1
- package/dist/core/session-prompt-inheritance.test.d.ts +1 -0
- package/dist/core/session-prompt-inheritance.test.js +132 -0
- package/dist/core/session-prompt-inheritance.test.js.map +1 -0
- package/dist/core/session-settings-prompt.d.ts +12 -4
- package/dist/core/session-settings-prompt.js +50 -27
- package/dist/core/session-settings-prompt.js.map +1 -1
- package/dist/core/session-settings-prompt.test.js +31 -22
- package/dist/core/session-settings-prompt.test.js.map +1 -1
- package/dist/plugins/plugin-system.js +3 -0
- package/dist/plugins/plugin-system.js.map +1 -1
- package/dist/session/session-export.d.ts +4 -0
- package/dist/session/session-export.js.map +1 -1
- package/dist/session/session-store.js +4 -6
- package/dist/session/session-store.js.map +1 -1
- package/dist/web/index.d.ts +5 -1
- package/dist/web/index.js +28 -6
- package/dist/web/index.js.map +1 -1
- package/dist/web/session-prompt-integration.test.js +1 -1
- package/dist/web/session-prompt-integration.test.js.map +1 -1
- package/docs/prompt-config.md +19 -4
- package/package.json +1 -1
|
@@ -50,7 +50,7 @@ test("WebRepl session editor uses real file baseline and session persistence wit
|
|
|
50
50
|
await store.save("Latest global baseline", original.revision);
|
|
51
51
|
const reset = await repl.saveSessionPrompt({ reset: true, revision: saved.revision });
|
|
52
52
|
assert.equal(reset.override, false);
|
|
53
|
-
assert.ok(reset.
|
|
53
|
+
assert.ok(reset.effectiveContent.includes("Latest global baseline"));
|
|
54
54
|
assert.equal(published, 2);
|
|
55
55
|
assert.equal((await store.read()).content, "Latest global baseline");
|
|
56
56
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-prompt-integration.test.js","sourceRoot":"","sources":["../../src/web/session-prompt-integration.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"session-prompt-integration.test.js","sourceRoot":"","sources":["../../src/web/session-prompt-integration.test.ts"],"names":[],"mappings":"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"}
|
package/docs/prompt-config.md
CHANGED
|
@@ -50,13 +50,28 @@ Reads use the actual file, not a process content cache. Initialization and compa
|
|
|
50
50
|
|
|
51
51
|
The lock is deliberately **not stolen based on age** (which could allow two live writers). After a crashed/killed writer, an administrator may remove the leftover `.lock` directory only after confirming that no writer is active. The prior complete `system.md` remains readable; orphan `.tmp` files can likewise be removed. External editors should save atomically; the API detects edits made before its locked revision check, but cannot coordinate an external editor that ignores the lock and writes concurrently.
|
|
52
52
|
|
|
53
|
-
##
|
|
53
|
+
## Layered session instructions
|
|
54
54
|
|
|
55
|
-
`GET /api/session-prompt?tabId=...&sessionId=...` returns `{content, override, revision}`.
|
|
55
|
+
`GET /api/session-prompt?tabId=...&sessionId=...` returns `{content, mode, override, revision, effectiveContent, effectiveRevision}`. **content is only the editable session instruction**, empty when inheriting; `effectiveContent` is a read-only composition without internal cache markers. Clients must never save the effective preview as editable content.
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
Modes:
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
- `inherit`: no session instruction; follows the latest global file.
|
|
60
|
+
- `append`: latest global baseline plus session instructions (default for new edits).
|
|
61
|
+
- `replace_base`: replaces only sections tagged `source: "global"`, preserving runtime/tool/plugin/application sections. Embedded custom context managers must tag their global sections to opt into replacement.
|
|
62
|
+
- `legacy_full_override`: existing transcripts without a mode retain their exact historical full replacement. No automatic text stripping or migration occurs. The UI warns and requires confirmation before switching modes; new sessions cannot create this mode. Old clients editing an existing legacy prompt without specifying mode retain legacy semantics.
|
|
63
|
+
|
|
64
|
+
`POST` accepts `{content, mode?, revision}` or `{reset:true, revision}`. Success adds `{ok:true, deferred}` to the GET shape. Reset returns to inherit and clears only session configuration. Empty custom text, internal markers, invalid modes, unknown fields, and content over 256 Ki characters are rejected (400 / `SESSION_PROMPT_INVALID`). Competing session edits return 409 / `SESSION_PROMPT_CONFLICT`; storage failures return 500 / `SESSION_PROMPT_FAILED`.
|
|
65
|
+
|
|
66
|
+
`revision` covers the session configuration and its owner, not generated text. Global/tool/plugin changes update `effectiveRevision` and the preview without invalidating a session draft. Global editing retains its independent file CAS. Clients preserve drafts on failed saves and runtime preview updates.
|
|
67
|
+
|
|
68
|
+
Session content and mode persist in the transcript and restore in the same session only. Accepted busy edits persist immediately but become active at the next model-turn boundary; in-flight requests do not change. Runtime context exposes active `mode`, `effectiveRevision`, and queued `pendingMode`/`deferred`, separately from the editor's desired state.
|
|
69
|
+
|
|
70
|
+
## Tool-dependent context
|
|
71
|
+
|
|
72
|
+
Effective tool definitions are captured once per model request and used both for capability instructions and the provider tools list. Plugin prompt sections may declare `requiresTools: ["tool_name"]`; such sections are included only when all dependencies are in the effective tool set. General plugin instructions remain independent. The downloads plugin uses this for `expose_downloads`. Disabled tools do not rewrite arbitrary user-authored text; runtime instructions explicitly explain that text cannot enable an unavailable tool.
|
|
73
|
+
|
|
74
|
+
Web hosts provide `resolveGlobalToolOverrides` alongside persistence. Existing runtimes re-read this shared source at the next model-turn boundary or idle preview/tool-list refresh, so `inherit` follows global changes without reconstructing the session. Explicit session enable/disable settings retain precedence. Busy previews never change the executing tool registry. This is lazy refresh within the host, not a cross-process file watcher or a push update to every browser tab. Tool settings publish only after successful persistence; concurrent global/session writes are serialized.
|
|
60
75
|
|
|
61
76
|
## Validation
|
|
62
77
|
|