crewly 1.11.3 → 1.11.4
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/config/skills/agent/core/accept-task/SKILL.md +35 -7
- package/config/skills/agent/core/poll-tasks/execute.sh +44 -9
- package/config/skills/agent/core/poll-tasks/execute.test.sh +98 -0
- package/config/skills/agent/core/record-learning/execute.sh +92 -3
- package/config/skills/agent/core/register-self/SKILL.md +51 -8
- package/config/skills/agent/transcribe-audio/SKILL.md +110 -0
- package/config/skills/agent/transcribe-audio/execute.sh +223 -0
- package/config/skills/agent/transcribe-audio/instructions.md +92 -0
- package/config/skills/agent/transcribe-audio/skill.json +22 -0
- package/config/skills/orchestrator/assign-task/SKILL.md +40 -6
- package/config/skills/orchestrator/broadcast/SKILL.md +45 -8
- package/dist/backend/backend/src/constants.d.ts +0 -16
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +0 -16
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/memory/memory.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/memory/memory.controller.js +3 -10
- package/dist/backend/backend/src/controllers/memory/memory.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/system/system.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/system/system.controller.js +24 -5
- package/dist/backend/backend/src/controllers/system/system.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts +2 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +124 -1
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.js +0 -3
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/agent-registration.service.js +56 -20
- package/dist/backend/backend/src/services/agent/agent-registration.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/index.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/index.js +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/index.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js +2 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/prompt-assembly.service.js.map +1 -1
- package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts +79 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.d.ts.map +1 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js +118 -0
- package/dist/backend/backend/src/services/ai/prompt-modules/sop-norm-distinction.module.js.map +1 -0
- package/dist/backend/backend/src/services/boot/boot-announce.service.d.ts +88 -0
- package/dist/backend/backend/src/services/boot/boot-announce.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/boot/boot-announce.service.js +119 -0
- package/dist/backend/backend/src/services/boot/boot-announce.service.js.map +1 -0
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js +14 -0
- package/dist/backend/backend/src/services/event-bus/event-to-workitem-bridge.service.js.map +1 -1
- package/dist/backend/backend/src/services/mcp-server.d.ts.map +1 -1
- package/dist/backend/backend/src/services/mcp-server.js +0 -6
- package/dist/backend/backend/src/services/mcp-server.js.map +1 -1
- package/dist/backend/backend/src/services/memory/learning-format.validator.d.ts +97 -0
- package/dist/backend/backend/src/services/memory/learning-format.validator.d.ts.map +1 -0
- package/dist/backend/backend/src/services/memory/learning-format.validator.js +209 -0
- package/dist/backend/backend/src/services/memory/learning-format.validator.js.map +1 -0
- package/dist/backend/backend/src/services/memory/memory.service.d.ts +78 -41
- package/dist/backend/backend/src/services/memory/memory.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/memory.service.js +209 -127
- package/dist/backend/backend/src/services/memory/memory.service.js.map +1 -1
- package/dist/backend/backend/src/services/memory/project-memory.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/memory/project-memory.service.js +37 -9
- package/dist/backend/backend/src/services/memory/project-memory.service.js.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js +29 -0
- package/dist/backend/backend/src/services/orchestrator/orchestrator-heartbeat-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.d.ts.map +1 -1
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.js +9 -0
- package/dist/backend/backend/src/services/session/pty/pty-session-backend.js.map +1 -1
- package/dist/backend/backend/src/services/session/runtime-pid-registry.service.d.ts +86 -0
- package/dist/backend/backend/src/services/session/runtime-pid-registry.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/session/runtime-pid-registry.service.js +214 -0
- package/dist/backend/backend/src/services/session/runtime-pid-registry.service.js.map +1 -0
- package/dist/backend/backend/src/services/sop/sop.service.d.ts +70 -2
- package/dist/backend/backend/src/services/sop/sop.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/sop/sop.service.js +93 -3
- package/dist/backend/backend/src/services/sop/sop.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/claim.service.d.ts +41 -0
- package/dist/backend/backend/src/services/task-pool/claim.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/claim.service.js +72 -0
- package/dist/backend/backend/src/services/task-pool/claim.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +16 -0
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js +20 -0
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.d.ts.map +1 -1
- package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.js +11 -0
- package/dist/backend/backend/src/services/telegram/telegram-orchestrator-bridge.js.map +1 -1
- package/dist/backend/backend/src/services/telegram/telegram.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/telegram/telegram.service.js +24 -2
- package/dist/backend/backend/src/services/telegram/telegram.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/mission-reminder.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/mission-reminder.service.js +18 -18
- package/dist/backend/backend/src/services/v3/mission-reminder.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts +10 -0
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.js +20 -12
- package/dist/backend/backend/src/services/v3/request-sla.subscriber.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js +12 -3
- package/dist/backend/backend/src/services/wiki/wiki-migrate.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-query.service.d.ts +15 -5
- package/dist/backend/backend/src/services/wiki/wiki-query.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-query.service.js +31 -50
- package/dist/backend/backend/src/services/wiki/wiki-query.service.js.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-search.service.d.ts +16 -0
- package/dist/backend/backend/src/services/wiki/wiki-search.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/wiki/wiki-search.service.js +20 -0
- package/dist/backend/backend/src/services/wiki/wiki-search.service.js.map +1 -1
- package/dist/backend/backend/src/types/settings.types.d.ts +8 -0
- package/dist/backend/backend/src/types/settings.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/settings.types.js +2 -0
- package/dist/backend/backend/src/types/settings.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts +23 -0
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.js +29 -0
- package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/cli/backend/src/constants.d.ts +0 -16
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +0 -16
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/mcp-server.d.ts.map +1 -1
- package/dist/cli/backend/src/services/mcp-server.js +0 -6
- package/dist/cli/backend/src/services/mcp-server.js.map +1 -1
- package/dist/cli/backend/src/services/memory/memory.service.d.ts +78 -41
- package/dist/cli/backend/src/services/memory/memory.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/memory/memory.service.js +209 -127
- package/dist/cli/backend/src/services/memory/memory.service.js.map +1 -1
- package/dist/cli/backend/src/services/memory/project-memory.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/memory/project-memory.service.js +37 -9
- package/dist/cli/backend/src/services/memory/project-memory.service.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/claim.service.d.ts +41 -0
- package/dist/cli/backend/src/services/task-pool/claim.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/claim.service.js +72 -0
- package/dist/cli/backend/src/services/task-pool/claim.service.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +16 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js +20 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/services/wiki/schema-loader.service.d.ts +57 -0
- package/dist/cli/backend/src/services/wiki/schema-loader.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/wiki/schema-loader.service.js +183 -0
- package/dist/cli/backend/src/services/wiki/schema-loader.service.js.map +1 -0
- package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts +100 -0
- package/dist/cli/backend/src/services/wiki/wiki-ingest.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/wiki/wiki-ingest.service.js +212 -0
- package/dist/cli/backend/src/services/wiki/wiki-ingest.service.js.map +1 -0
- package/dist/cli/backend/src/services/wiki/wiki-overlay.resolver.d.ts +43 -0
- package/dist/cli/backend/src/services/wiki/wiki-overlay.resolver.d.ts.map +1 -0
- package/dist/cli/backend/src/services/wiki/wiki-overlay.resolver.js +67 -0
- package/dist/cli/backend/src/services/wiki/wiki-overlay.resolver.js.map +1 -0
- package/dist/cli/backend/src/services/wiki/wiki-search.service.d.ts +166 -0
- package/dist/cli/backend/src/services/wiki/wiki-search.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/wiki/wiki-search.service.js +379 -0
- package/dist/cli/backend/src/services/wiki/wiki-search.service.js.map +1 -0
- package/dist/cli/backend/src/services/wiki/wiki.types.d.ts +84 -0
- package/dist/cli/backend/src/services/wiki/wiki.types.d.ts.map +1 -0
- package/dist/cli/backend/src/services/wiki/wiki.types.js +10 -0
- package/dist/cli/backend/src/services/wiki/wiki.types.js.map +1 -0
- package/dist/cli/backend/src/types/settings.types.d.ts +8 -0
- package/dist/cli/backend/src/types/settings.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/settings.types.js +2 -0
- package/dist/cli/backend/src/types/settings.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts +23 -0
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.js +29 -0
- package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
- package/frontend/dist/assets/{index-44266b5d.css → index-8205ea5e.css} +1 -1
- package/frontend/dist/assets/{index-4099a91c.js → index-890d3f9d.js} +289 -289
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
|
@@ -979,7 +979,19 @@ export class AgentRegistrationService {
|
|
|
979
979
|
content = await readFile(templatePath, 'utf8');
|
|
980
980
|
this.promptCache.set(templatePath, content);
|
|
981
981
|
}
|
|
982
|
-
|
|
982
|
+
// Substitute path placeholders before writing (#209). The cache holds
|
|
983
|
+
// the RAW template; resolve into a per-project copy so skill-script and
|
|
984
|
+
// project paths in the provisioned config file point at real locations
|
|
985
|
+
// (mirrors the placeholder substitution done for the registration prompt).
|
|
986
|
+
const agentSkillsPath = path.join(this.projectRoot, 'config', 'skills', 'agent');
|
|
987
|
+
const orchestratorSkillsPath = path.join(this.projectRoot, 'config', 'skills', 'orchestrator');
|
|
988
|
+
const marketplaceSkillsPath = path.join(os.homedir(), '.crewly', 'marketplace', 'skills');
|
|
989
|
+
const resolved = content
|
|
990
|
+
.replace(/\{\{PROJECT_PATH\}\}/g, projectPath)
|
|
991
|
+
.replace(/\{\{AGENT_SKILLS_PATH\}\}/g, agentSkillsPath)
|
|
992
|
+
.replace(/\{\{ORCHESTRATOR_SKILLS_PATH\}\}/g, orchestratorSkillsPath)
|
|
993
|
+
.replace(/\{\{MARKETPLACE_SKILLS_PATH\}\}/g, marketplaceSkillsPath);
|
|
994
|
+
await writeFile(config.outputPath, resolved, { flag: 'wx' }).catch(() => {
|
|
983
995
|
// File already exists — no action needed
|
|
984
996
|
});
|
|
985
997
|
}
|
|
@@ -3494,6 +3506,8 @@ Loop until done, blocked, or explicitly reassigned:
|
|
|
3494
3506
|
await delay(CONFIRM_INTERVAL_MS);
|
|
3495
3507
|
confirmAttempt++;
|
|
3496
3508
|
const loopOutput = sessionHelper.capturePane(sessionName);
|
|
3509
|
+
const loopBottom = loopOutput.split('\n').slice(-10).join(' ').replace(/\s+/g, ' ');
|
|
3510
|
+
const textStuck = loopBottom.includes(confirmSnippet);
|
|
3497
3511
|
// Spinner or working indicator → delivered
|
|
3498
3512
|
if (containsSpinnerOrWorkingIndicator(loopOutput)) {
|
|
3499
3513
|
this.logger.info('Confirmation loop: processing detected', {
|
|
@@ -3502,7 +3516,28 @@ Loop until done, blocked, or explicitly reassigned:
|
|
|
3502
3516
|
claudeDelivered = true;
|
|
3503
3517
|
break;
|
|
3504
3518
|
}
|
|
3505
|
-
//
|
|
3519
|
+
// Text still stuck → Enter was dropped, NOT delivered. Try
|
|
3520
|
+
// Tab+Enter recovery and re-check next iteration. This is
|
|
3521
|
+
// checked BEFORE the output-change shortcut below: when our
|
|
3522
|
+
// own pasted message is echoed at the prompt the output DID
|
|
3523
|
+
// change vs the pre-send baseline, but that change is the
|
|
3524
|
+
// stuck echo, not a response — treating it as "delivered"
|
|
3525
|
+
// is the false-positive that masked the orc 假死 (#686
|
|
3526
|
+
// follow-up: a hung session looked "delivered" forever).
|
|
3527
|
+
if (textStuck) {
|
|
3528
|
+
this.logger.warn('Confirmation loop: text still stuck, pressing Tab+Enter', {
|
|
3529
|
+
sessionName, attempt, confirmAttempt,
|
|
3530
|
+
});
|
|
3531
|
+
await sessionHelper.sendKey(sessionName, 'Tab');
|
|
3532
|
+
await delay(200);
|
|
3533
|
+
await sessionHelper.sendEnter(sessionName);
|
|
3534
|
+
await delay(500);
|
|
3535
|
+
await sessionHelper.sendEnter(sessionName); // backup
|
|
3536
|
+
continue;
|
|
3537
|
+
}
|
|
3538
|
+
// Fast-response detection: output changed since send AND our
|
|
3539
|
+
// message text is NOT stuck at the prompt → a real response
|
|
3540
|
+
// landed and returned to prompt before we looked. Delivered.
|
|
3506
3541
|
if (loopOutput !== beforeOutput) {
|
|
3507
3542
|
this.logger.info('Confirmation loop: output changed from pre-send — fast response confirmed', {
|
|
3508
3543
|
sessionName, attempt, confirmAttempt,
|
|
@@ -3511,25 +3546,13 @@ Loop until done, blocked, or explicitly reassigned:
|
|
|
3511
3546
|
break;
|
|
3512
3547
|
}
|
|
3513
3548
|
// Not at prompt and text not stuck → delivered
|
|
3514
|
-
|
|
3515
|
-
if (!this.isClaudeAtPrompt(loopOutput, runtimeType) && !loopBottom.includes(confirmSnippet)) {
|
|
3549
|
+
if (!this.isClaudeAtPrompt(loopOutput, runtimeType)) {
|
|
3516
3550
|
this.logger.info('Confirmation loop: prompt gone, text cleared', {
|
|
3517
3551
|
sessionName, attempt, confirmAttempt,
|
|
3518
3552
|
});
|
|
3519
3553
|
claudeDelivered = true;
|
|
3520
3554
|
break;
|
|
3521
3555
|
}
|
|
3522
|
-
// Text still stuck → Tab+Enter recovery
|
|
3523
|
-
if (loopBottom.includes(confirmSnippet)) {
|
|
3524
|
-
this.logger.warn('Confirmation loop: text still stuck, pressing Tab+Enter', {
|
|
3525
|
-
sessionName, attempt, confirmAttempt,
|
|
3526
|
-
});
|
|
3527
|
-
await sessionHelper.sendKey(sessionName, 'Tab');
|
|
3528
|
-
await delay(200);
|
|
3529
|
-
await sessionHelper.sendEnter(sessionName);
|
|
3530
|
-
await delay(500);
|
|
3531
|
-
await sessionHelper.sendEnter(sessionName); // backup
|
|
3532
|
-
}
|
|
3533
3556
|
}
|
|
3534
3557
|
if (!claudeDelivered) {
|
|
3535
3558
|
this.logger.error('Confirmation loop exhausted — delivery unconfirmed', {
|
|
@@ -4390,12 +4413,12 @@ Loop until done, blocked, or explicitly reassigned:
|
|
|
4390
4413
|
// Send the kickoff / file-read instruction
|
|
4391
4414
|
await sessionHelper.sendMessage(sessionName, messageToSend);
|
|
4392
4415
|
// Claude Code: rapid-check verification.
|
|
4393
|
-
// Check every 1s for up to
|
|
4416
|
+
// Check every 1s for up to 24s (Claude v2 first-token can be slow: MCP/skill load) whether Claude started processing.
|
|
4394
4417
|
// If Claude leaves the prompt at any point, the message was received.
|
|
4395
4418
|
// This avoids the old length-comparison approach which was unreliable
|
|
4396
4419
|
// (Claude's TUI redraws change output length unpredictably).
|
|
4397
4420
|
if (isClaudeCode) {
|
|
4398
|
-
for (let i = 0; i <
|
|
4421
|
+
for (let i = 0; i < 24; i++) {
|
|
4399
4422
|
await delay(1000);
|
|
4400
4423
|
if (abortSignal?.aborted)
|
|
4401
4424
|
return false;
|
|
@@ -4418,9 +4441,22 @@ Loop until done, blocked, or explicitly reassigned:
|
|
|
4418
4441
|
// Claude still at prompt after 8s — message likely not received.
|
|
4419
4442
|
// For Claude Code with --append-system-prompt-file, don't retry
|
|
4420
4443
|
// (would cause duplicate). Log warning and return false.
|
|
4421
|
-
|
|
4422
|
-
|
|
4423
|
-
|
|
4444
|
+
// Still at prompt — the kickoff was likely typed but not submitted (PTY submit
|
|
4445
|
+
// can be dropped). A missing agent costs far more than a duplicate kickoff
|
|
4446
|
+
// (idempotent: it just re-reads the prompt file), so resend ONCE and re-poll.
|
|
4447
|
+
this.logger.warn('Kickoff unconfirmed after 24s — resending once', { sessionName, runtimeType });
|
|
4448
|
+
await sessionHelper.sendMessage(sessionName, messageToSend);
|
|
4449
|
+
for (let j = 0; j < 12; j++) {
|
|
4450
|
+
await delay(1000);
|
|
4451
|
+
if (abortSignal?.aborted)
|
|
4452
|
+
return false;
|
|
4453
|
+
const out2 = sessionHelper.capturePane(sessionName);
|
|
4454
|
+
if (containsSpinnerOrWorkingIndicator(out2) || !this.isClaudeAtPrompt(out2, RUNTIME_TYPES.CLAUDE_CODE)) {
|
|
4455
|
+
this.logger.debug('Kickoff delivered on resend', { sessionName, checkIndex: j });
|
|
4456
|
+
return true;
|
|
4457
|
+
}
|
|
4458
|
+
}
|
|
4459
|
+
this.logger.warn('Kickoff delivery unconfirmed after resend — giving up', { sessionName, runtimeType });
|
|
4424
4460
|
return false;
|
|
4425
4461
|
}
|
|
4426
4462
|
// Gemini CLI / other runtimes: trust the PTY delivery.
|