@inharness-ai/claude4spec 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/dist/bin/c4s/commands/ask.d.ts +13 -0
- package/dist/bin/c4s/commands/ask.js +167 -0
- package/dist/bin/c4s/commands/ask.js.map +1 -0
- package/dist/bin/c4s/errors.d.ts +1 -1
- package/dist/bin/c4s/errors.js.map +1 -1
- package/dist/bin/c4s/project.d.ts +6 -0
- package/dist/bin/c4s/project.js +25 -0
- package/dist/bin/c4s/project.js.map +1 -1
- package/dist/bin/c4s.js +12 -6
- package/dist/bin/c4s.js.map +1 -1
- package/dist/server/external-skills/brief-implementer-template.d.ts +1 -1
- package/dist/server/external-skills/brief-implementer-template.js +14 -0
- package/dist/server/external-skills/brief-implementer-template.js.map +1 -1
- package/dist/server/external-skills/spec-reader-template.d.ts +1 -1
- package/dist/server/external-skills/spec-reader-template.js +12 -0
- package/dist/server/external-skills/spec-reader-template.js.map +1 -1
- package/dist/server/index.js +39 -34
- package/dist/server/index.js.map +1 -1
- package/dist/server/routes/agent-turn.d.ts +92 -0
- package/dist/server/routes/agent-turn.js +379 -0
- package/dist/server/routes/agent-turn.js.map +1 -0
- package/dist/server/routes/chat.d.ts +2 -30
- package/dist/server/routes/chat.js +33 -396
- package/dist/server/routes/chat.js.map +1 -1
- package/dist/server/routes/threads.d.ts +2 -2
- package/dist/server/routes/threads.js +51 -1
- package/dist/server/routes/threads.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { Router } from 'express';
|
|
2
|
-
|
|
2
|
+
import { nanoid } from 'nanoid';
|
|
3
|
+
import { readConfig } from '../config.js';
|
|
4
|
+
import { activeAdapters, runAgentTurn, AgentTurnError, } from './agent-turn.js';
|
|
5
|
+
export function threadsRouter(deps) {
|
|
3
6
|
const router = Router();
|
|
7
|
+
const chat = deps.chatService;
|
|
4
8
|
router.get('/', (_req, res, next) => {
|
|
5
9
|
try {
|
|
6
10
|
res.json({ data: chat.listThreads() });
|
|
@@ -44,6 +48,52 @@ export function threadsRouter(chat) {
|
|
|
44
48
|
next(err);
|
|
45
49
|
}
|
|
46
50
|
});
|
|
51
|
+
// M05 `m05ask`: headless synchroniczna tura agenta. W odroznieniu od
|
|
52
|
+
// `POST /api/chat` (SSE) blokuje zadanie do konca tury i zwraca skolapsowany
|
|
53
|
+
// kontrakt `{ threadId, answer }`. Generyczny po `context_type` — runtime
|
|
54
|
+
// budowany tym samym `runAgentTurn`, ktory zasila `POST /api/chat`.
|
|
55
|
+
router.post('/:id/ask', async (req, res, next) => {
|
|
56
|
+
try {
|
|
57
|
+
const message = typeof req.body?.message === 'string' ? req.body.message : '';
|
|
58
|
+
if (!message.trim()) {
|
|
59
|
+
return res.status(400).json({ error: { code: 'VALIDATION', message: 'message required' } });
|
|
60
|
+
}
|
|
61
|
+
// Endpoint NIE tworzy watku — `:id` musi juz istniec.
|
|
62
|
+
const thread = chat.getThreadMeta(req.params.id);
|
|
63
|
+
if (!thread) {
|
|
64
|
+
return res.status(404).json({ error: { code: 'NOT_FOUND', message: 'thread not found' } });
|
|
65
|
+
}
|
|
66
|
+
// Gating one-stream-per-thread — wspoldzielony rejestr z `POST /api/chat`.
|
|
67
|
+
if (activeAdapters.has(thread.id)) {
|
|
68
|
+
return res.status(409).json({
|
|
69
|
+
error: { code: 'STREAM_IN_PROGRESS', message: 'Thread already streaming' },
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
const result = await runAgentTurn(deps, {
|
|
73
|
+
thread,
|
|
74
|
+
prompt: message,
|
|
75
|
+
model: 'sonnet-4.6',
|
|
76
|
+
architectureConfig: {
|
|
77
|
+
claude_usePreset: readConfig(deps.cwd).agent?.claudeUsePreset ?? true,
|
|
78
|
+
},
|
|
79
|
+
requestId: nanoid(12),
|
|
80
|
+
consoleObserver: null,
|
|
81
|
+
// Headless: stream kolapsowany serwerowo, brak transportu eventow.
|
|
82
|
+
onEvent: () => { },
|
|
83
|
+
// Brak interaktywnego kanalu — patrz patch `headless-onuserinput`.
|
|
84
|
+
});
|
|
85
|
+
res.json(result);
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
if (err instanceof AgentTurnError) {
|
|
89
|
+
// 503 AGENT_UNAVAILABLE — `claude` CLI niedostepne/niezalogowane.
|
|
90
|
+
// 500 — tura zakonczona eventem `error`; `code ∈ AGENT_ERROR|TIMEOUT|ABORTED`.
|
|
91
|
+
const status = err.code === 'AGENT_UNAVAILABLE' ? 503 : 500;
|
|
92
|
+
return res.status(status).json({ error: { code: err.code, message: err.message } });
|
|
93
|
+
}
|
|
94
|
+
next(err);
|
|
95
|
+
}
|
|
96
|
+
});
|
|
47
97
|
router.delete('/:id', (req, res, next) => {
|
|
48
98
|
try {
|
|
49
99
|
res.json({ data: chat.deleteThread(req.params.id) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../../../src/server/routes/threads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"threads.js","sourceRoot":"","sources":["../../../src/server/routes/threads.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inharness-ai/claude4spec",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.5",
|
|
4
4
|
"description": "Plan the whole system before your agent writes a line of code. Local-first planning layer with structured entities and typed relations.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Michael Tomala <mi.tomala@gmail.com>",
|