@jskit-ai/agent-docs 0.1.298 → 0.1.299
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/guide/agent/app-extras/assistant-conversation.md +23 -6
- package/package.json +1 -1
- package/patterns/minimal-foundation/example/bin/develop.js +9 -3
- package/patterns/minimal-foundation/example/package.json +1 -1
- package/patterns/shell-foundation/example/bin/develop.js +9 -3
- package/patterns/shell-foundation/example/package.json +1 -1
- package/reference/autogen/PATTERN_INDEX.md +4 -4
- package/reference/autogen/packages/assistant-core.md +1 -1
- package/skills/jskit/references/pattern-index.md +4 -4
- package/skills/jskit/references/patterns/app/minimal-foundation/example/bin/develop.js +9 -3
- package/skills/jskit/references/patterns/app/minimal-foundation/example/package.json +1 -1
- package/skills/jskit/references/patterns/app/shell-foundation/example/bin/develop.js +9 -3
- package/skills/jskit/references/patterns/app/shell-foundation/example/package.json +1 -1
|
@@ -1274,8 +1274,17 @@ supplied binding never blocks on message sending or unknown delivery.
|
|
|
1274
1274
|
An active goal flashes red; a paused goal stays orange. `elapsedSeconds` is the
|
|
1275
1275
|
accumulated **active running time**, and `sampledAt` is its sample time in epoch
|
|
1276
1276
|
**milliseconds**. The UI adds time only while active. Omit elapsed time if the
|
|
1277
|
-
backend cannot supply it truthfully.
|
|
1278
|
-
|
|
1277
|
+
backend cannot supply it truthfully. Only an active goal's chip shows its clock;
|
|
1278
|
+
a `paused`, `blocked`, `usageLimited` or `budgetLimited` goal's chip shows its
|
|
1279
|
+
status label (for example "Goal paused") instead, and its details keep the
|
|
1280
|
+
elapsed time. A `usageLimited` goal is waiting at its AI account's limit: its
|
|
1281
|
+
label names the limit and, from an optional `resetsAt` (epoch **seconds**), when it
|
|
1282
|
+
resets ("Waiting: AI usage limit, resets at 05:00", with the day when the reset is
|
|
1283
|
+
not today); with `outOfCredit: true` it reads "Out of credit: top up or switch AI
|
|
1284
|
+
account". Its details say the goal does not continue by itself and offer Resume
|
|
1285
|
+
and Cancel, and Pause when `pauseBlocked` is set. In a narrow conversation pane
|
|
1286
|
+
the clock hides and a long label ends in an ellipsis; the light stays visible
|
|
1287
|
+
and details retain the time and full label. Reduced motion uses
|
|
1279
1288
|
a steady red light. Pause follows the command's declared behavior:
|
|
1280
1289
|
`pauseInterruptsTurn: true` means it stops the current turn and keeps the goal;
|
|
1281
1290
|
otherwise it prevents further automatic turns while Stop interrupts current work.
|
|
@@ -1286,10 +1295,18 @@ adapter. For a low-level adapter, omit `goal` or use `enabled: false` when goals
|
|
|
1286
1295
|
are unsupported. The supplied binding hides unsupported controls automatically.
|
|
1287
1296
|
|
|
1288
1297
|
Claude Pause retains the objective and native identity in the existing conversation
|
|
1289
|
-
binding before interrupting execution.
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1298
|
+
binding before interrupting execution. It sends nothing to Claude, so it works when
|
|
1299
|
+
the account is out of credit. When another message starts a process, the
|
|
1300
|
+
native owner clears the restored checker with Claude's local command (no model
|
|
1301
|
+
request) and requires its exact successful receipt before admitting user input.
|
|
1302
|
+
Ordinary messages and process restart keep the goal paused. Only that retained
|
|
1303
|
+
Pause reads `paused`: a Claude goal whose turn ended any other way (an interrupt,
|
|
1304
|
+
a process restart) keeps its checker armed, so the next turn continues it and it
|
|
1305
|
+
reads `active`. When Claude's own history ends the goal's turn with its usage-limit
|
|
1306
|
+
message, the goal reads `usageLimited` with that message's `resetsAt`; its
|
|
1307
|
+
credit-balance message reads `usageLimited` with `outOfCredit: true`. A later
|
|
1308
|
+
answer returns it to `active`. Hosts that restart goals must not resume a waiting
|
|
1309
|
+
goal: Resume after the reset stays the person's choice. Explicit Resume reinstalls the objective;
|
|
1293
1310
|
Cancel removes the retained goal. A failed native clear leaves the new message
|
|
1294
1311
|
unsent and retains Pause for recovery. Hosts supplying their own Claude store must
|
|
1295
1312
|
round-trip the optional `pausedGoal` field with the existing conversation state.
|
package/package.json
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { createRequire } from "node:module";
|
|
4
|
+
import path from "node:path";
|
|
2
5
|
import { startServer } from "../server.js";
|
|
3
6
|
import { DEFAULT_PORT } from "../server/lib/runtimeEnv.js";
|
|
4
7
|
|
|
@@ -43,10 +46,13 @@ process.once("SIGTERM", () => requestShutdown("SIGTERM"));
|
|
|
43
46
|
try {
|
|
44
47
|
apiServer = await startServer({ host: LOOPBACK_HOST, port: 0 });
|
|
45
48
|
const apiPort = /** @type {import("node:net").AddressInfo} */ (apiServer.server.address()).port;
|
|
46
|
-
|
|
49
|
+
// Vite runs directly under node rather than through `npm run dev`: npm exits on SIGTERM without stopping
|
|
50
|
+
// the script it started, which left Vite serving the port after this launcher stopped.
|
|
51
|
+
const vitePackageFile = createRequire(import.meta.url).resolve("vite/package.json");
|
|
52
|
+
const viteCli = path.join(path.dirname(vitePackageFile), JSON.parse(readFileSync(vitePackageFile, "utf8")).bin.vite);
|
|
47
53
|
viteProcess = spawn(
|
|
48
|
-
|
|
49
|
-
[
|
|
54
|
+
process.execPath,
|
|
55
|
+
[viteCli, "--host", previewHost, "--port", String(previewPort), "--strictPort"],
|
|
50
56
|
{
|
|
51
57
|
cwd: process.cwd(),
|
|
52
58
|
env: {
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { createRequire } from "node:module";
|
|
4
|
+
import path from "node:path";
|
|
2
5
|
import { startServer } from "../server.js";
|
|
3
6
|
import { DEFAULT_PORT } from "../server/lib/runtimeEnv.js";
|
|
4
7
|
|
|
@@ -43,10 +46,13 @@ process.once("SIGTERM", () => requestShutdown("SIGTERM"));
|
|
|
43
46
|
try {
|
|
44
47
|
apiServer = await startServer({ host: LOOPBACK_HOST, port: 0 });
|
|
45
48
|
const apiPort = /** @type {import("node:net").AddressInfo} */ (apiServer.server.address()).port;
|
|
46
|
-
|
|
49
|
+
// Vite runs directly under node rather than through `npm run dev`: npm exits on SIGTERM without stopping
|
|
50
|
+
// the script it started, which left Vite serving the port after this launcher stopped.
|
|
51
|
+
const vitePackageFile = createRequire(import.meta.url).resolve("vite/package.json");
|
|
52
|
+
const viteCli = path.join(path.dirname(vitePackageFile), JSON.parse(readFileSync(vitePackageFile, "utf8")).bin.vite);
|
|
47
53
|
viteProcess = spawn(
|
|
48
|
-
|
|
49
|
-
[
|
|
54
|
+
process.execPath,
|
|
55
|
+
[viteCli, "--host", previewHost, "--port", String(previewPort), "--strictPort"],
|
|
50
56
|
{
|
|
51
57
|
cwd: process.cwd(),
|
|
52
58
|
env: {
|
|
@@ -15,7 +15,7 @@ A concrete Fastify, Vue, and JSKIT application foundation for products that do n
|
|
|
15
15
|
|
|
16
16
|
- Id: `app/minimal-foundation`
|
|
17
17
|
- Keywords: `app`, `fastify`, `foundation`, `minimal`, `server`, `vite`, `vue`
|
|
18
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
18
|
+
- Owner: `@jskit-ai/agent-docs@0.1.299`
|
|
19
19
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/app/minimal-foundation/PATTERN.md)
|
|
20
20
|
- Examples: [example/](../../skills/jskit/references/patterns/app/minimal-foundation/example/)
|
|
21
21
|
- Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`
|
|
@@ -26,7 +26,7 @@ A concrete JSKIT web application foundation with responsive shell navigation, se
|
|
|
26
26
|
|
|
27
27
|
- Id: `app/shell-foundation`
|
|
28
28
|
- Keywords: `app`, `foundation`, `material`, `navigation`, `placements`, `shell`, `vite`, `vue`
|
|
29
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
29
|
+
- Owner: `@jskit-ai/agent-docs@0.1.299`
|
|
30
30
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/app/shell-foundation/PATTERN.md)
|
|
31
31
|
- Examples: [example/](../../skills/jskit/references/patterns/app/shell-foundation/example/)
|
|
32
32
|
- Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
@@ -37,7 +37,7 @@ Configure an assistant runtime for one application surface and expose its chat a
|
|
|
37
37
|
|
|
38
38
|
- Id: `assistant/assistant-surface`
|
|
39
39
|
- Keywords: `ai`, `assistant`, `chat`, `config`, `environment`, `page`, `placement`, `settings`, `surface`
|
|
40
|
-
- Owner: `@jskit-ai/assistant-runtime@0.2.
|
|
40
|
+
- Owner: `@jskit-ai/assistant-runtime@0.2.44`
|
|
41
41
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/assistant/assistant-surface/PATTERN.md)
|
|
42
42
|
- Examples: [example/](../../skills/jskit/references/patterns/assistant/assistant-surface/example/)
|
|
43
43
|
- Requires: `@jskit-ai/assistant-runtime`, `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`, `@jskit-ai/shell-web`
|
|
@@ -356,7 +356,7 @@ Define a server feature through explicit capabilities and first-class actions, a
|
|
|
356
356
|
|
|
357
357
|
- Id: `server/feature-package`
|
|
358
358
|
- Keywords: `actions`, `aggregate`, `feature`, `handle`, `orchestration`, `owns`, `package`, `provider`, `repository`, `routes`, `server`, `table resource`
|
|
359
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
359
|
+
- Owner: `@jskit-ai/agent-docs@0.1.299`
|
|
360
360
|
- Read: [PATTERN.md](../../skills/jskit/references/patterns/server/feature-package/PATTERN.md)
|
|
361
361
|
- Examples: [example/](../../skills/jskit/references/patterns/server/feature-package/example/)
|
|
362
362
|
- Requires: `@jskit-ai/kernel`
|
|
@@ -463,7 +463,7 @@ Local functions
|
|
|
463
463
|
Exports
|
|
464
464
|
- `waitForClaudeConversationTurn(conversation, input = {}, { signal, defaultTimeoutMs = 180_000, maximumTimeoutMs = Infinity, createError = claudeTurnFailure, interruptedMessage = "Claude was interrupted when the application disconnected." } = {})`
|
|
465
465
|
- `runClaudeRenewalTurn(conversation, { clientMessageId, prompt, outputSchema, expectedThreadId, forbiddenThreadId, requireFreshHistory = false, timeoutMs = 180_000 }, { createError = claudeTurnFailure, unreadableCode = "assistant_claude_turn_unreadable", failedCode = "assistant_claude_turn_failed", acceptedField = "inputAccepted" } = {})`
|
|
466
|
-
- `createClaudeConversationGoals({ conversationId, readHistory,
|
|
466
|
+
- `createClaudeConversationGoals({ conversationId, readHistory, interrupt, send, readRetainedGoal, saveRetainedGoal })`
|
|
467
467
|
- `createClaudeConversationOwner({ configRoot, store, preparation, process, onEvent, createError = claudeTurnFailure, disconnectedMessage = "Claude was interrupted when the application disconnected." })`
|
|
468
468
|
- `type ClaudeConversationEntry`
|
|
469
469
|
- `type ClaudeConversationStore`
|
|
@@ -15,7 +15,7 @@ A concrete Fastify, Vue, and JSKIT application foundation for products that do n
|
|
|
15
15
|
|
|
16
16
|
- Id: `app/minimal-foundation`
|
|
17
17
|
- Keywords: `app`, `fastify`, `foundation`, `minimal`, `server`, `vite`, `vue`
|
|
18
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
18
|
+
- Owner: `@jskit-ai/agent-docs@0.1.299`
|
|
19
19
|
- Read: [PATTERN.md](patterns/app/minimal-foundation/PATTERN.md)
|
|
20
20
|
- Examples: [example/](patterns/app/minimal-foundation/example/)
|
|
21
21
|
- Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`
|
|
@@ -26,7 +26,7 @@ A concrete JSKIT web application foundation with responsive shell navigation, se
|
|
|
26
26
|
|
|
27
27
|
- Id: `app/shell-foundation`
|
|
28
28
|
- Keywords: `app`, `foundation`, `material`, `navigation`, `placements`, `shell`, `vite`, `vue`
|
|
29
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
29
|
+
- Owner: `@jskit-ai/agent-docs@0.1.299`
|
|
30
30
|
- Read: [PATTERN.md](patterns/app/shell-foundation/PATTERN.md)
|
|
31
31
|
- Examples: [example/](patterns/app/shell-foundation/example/)
|
|
32
32
|
- Requires: `@jskit-ai/http-runtime`, `@jskit-ai/kernel`, `@jskit-ai/shell-web`
|
|
@@ -37,7 +37,7 @@ Configure an assistant runtime for one application surface and expose its chat a
|
|
|
37
37
|
|
|
38
38
|
- Id: `assistant/assistant-surface`
|
|
39
39
|
- Keywords: `ai`, `assistant`, `chat`, `config`, `environment`, `page`, `placement`, `settings`, `surface`
|
|
40
|
-
- Owner: `@jskit-ai/assistant-runtime@0.2.
|
|
40
|
+
- Owner: `@jskit-ai/assistant-runtime@0.2.44`
|
|
41
41
|
- Read: [PATTERN.md](patterns/assistant/assistant-surface/PATTERN.md)
|
|
42
42
|
- Examples: [example/](patterns/assistant/assistant-surface/example/)
|
|
43
43
|
- Requires: `@jskit-ai/assistant-runtime`, `@jskit-ai/connectors-catalog`, `@jskit-ai/connectors-core`, `@jskit-ai/shell-web`
|
|
@@ -356,7 +356,7 @@ Define a server feature through explicit capabilities and first-class actions, a
|
|
|
356
356
|
|
|
357
357
|
- Id: `server/feature-package`
|
|
358
358
|
- Keywords: `actions`, `aggregate`, `feature`, `handle`, `orchestration`, `owns`, `package`, `provider`, `repository`, `routes`, `server`, `table resource`
|
|
359
|
-
- Owner: `@jskit-ai/agent-docs@0.1.
|
|
359
|
+
- Owner: `@jskit-ai/agent-docs@0.1.299`
|
|
360
360
|
- Read: [PATTERN.md](patterns/server/feature-package/PATTERN.md)
|
|
361
361
|
- Examples: [example/](patterns/server/feature-package/example/)
|
|
362
362
|
- Requires: `@jskit-ai/kernel`
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { createRequire } from "node:module";
|
|
4
|
+
import path from "node:path";
|
|
2
5
|
import { startServer } from "../server.js";
|
|
3
6
|
import { DEFAULT_PORT } from "../server/lib/runtimeEnv.js";
|
|
4
7
|
|
|
@@ -43,10 +46,13 @@ process.once("SIGTERM", () => requestShutdown("SIGTERM"));
|
|
|
43
46
|
try {
|
|
44
47
|
apiServer = await startServer({ host: LOOPBACK_HOST, port: 0 });
|
|
45
48
|
const apiPort = /** @type {import("node:net").AddressInfo} */ (apiServer.server.address()).port;
|
|
46
|
-
|
|
49
|
+
// Vite runs directly under node rather than through `npm run dev`: npm exits on SIGTERM without stopping
|
|
50
|
+
// the script it started, which left Vite serving the port after this launcher stopped.
|
|
51
|
+
const vitePackageFile = createRequire(import.meta.url).resolve("vite/package.json");
|
|
52
|
+
const viteCli = path.join(path.dirname(vitePackageFile), JSON.parse(readFileSync(vitePackageFile, "utf8")).bin.vite);
|
|
47
53
|
viteProcess = spawn(
|
|
48
|
-
|
|
49
|
-
[
|
|
54
|
+
process.execPath,
|
|
55
|
+
[viteCli, "--host", previewHost, "--port", String(previewPort), "--strictPort"],
|
|
50
56
|
{
|
|
51
57
|
cwd: process.cwd(),
|
|
52
58
|
env: {
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { createRequire } from "node:module";
|
|
4
|
+
import path from "node:path";
|
|
2
5
|
import { startServer } from "../server.js";
|
|
3
6
|
import { DEFAULT_PORT } from "../server/lib/runtimeEnv.js";
|
|
4
7
|
|
|
@@ -43,10 +46,13 @@ process.once("SIGTERM", () => requestShutdown("SIGTERM"));
|
|
|
43
46
|
try {
|
|
44
47
|
apiServer = await startServer({ host: LOOPBACK_HOST, port: 0 });
|
|
45
48
|
const apiPort = /** @type {import("node:net").AddressInfo} */ (apiServer.server.address()).port;
|
|
46
|
-
|
|
49
|
+
// Vite runs directly under node rather than through `npm run dev`: npm exits on SIGTERM without stopping
|
|
50
|
+
// the script it started, which left Vite serving the port after this launcher stopped.
|
|
51
|
+
const vitePackageFile = createRequire(import.meta.url).resolve("vite/package.json");
|
|
52
|
+
const viteCli = path.join(path.dirname(vitePackageFile), JSON.parse(readFileSync(vitePackageFile, "utf8")).bin.vite);
|
|
47
53
|
viteProcess = spawn(
|
|
48
|
-
|
|
49
|
-
[
|
|
54
|
+
process.execPath,
|
|
55
|
+
[viteCli, "--host", previewHost, "--port", String(previewPort), "--strictPort"],
|
|
50
56
|
{
|
|
51
57
|
cwd: process.cwd(),
|
|
52
58
|
env: {
|