agentix-cli 0.21.0 → 0.23.0
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/{agent-I3ILI3MO.js → agent-FSE4KRLX.js} +2 -2
- package/dist/{board-dashboard-ASI6MDKX.js → board-dashboard-PUACKWAN.js} +4 -4
- package/dist/builtin-TQKMR42Z.js +2 -0
- package/dist/chunk-3SHMHYPD.js +450 -0
- package/dist/chunk-3SHMHYPD.js.map +1 -0
- package/dist/{chunk-FUYZUGNQ.js → chunk-4INOOHND.js} +2 -2
- package/dist/chunk-72PAN7UI.js +103 -0
- package/dist/chunk-72PAN7UI.js.map +1 -0
- package/dist/chunk-BHSPAP4U.js +44 -0
- package/dist/chunk-BHSPAP4U.js.map +1 -0
- package/dist/chunk-BOUKM2PS.js +163 -0
- package/dist/chunk-BOUKM2PS.js.map +1 -0
- package/dist/{chunk-AANSVC5A.js → chunk-DXTIG5YV.js} +2 -2
- package/dist/chunk-EK37JHJI.js +13 -0
- package/dist/chunk-EK37JHJI.js.map +1 -0
- package/dist/chunk-EQPUB7CZ.js +685 -0
- package/dist/chunk-EQPUB7CZ.js.map +1 -0
- package/dist/{chunk-4MREHZP5.js → chunk-GOLZ6NEL.js} +2 -2
- package/dist/chunk-GOLZ6NEL.js.map +1 -0
- package/dist/{chunk-2B2DIQKD.js → chunk-KWUWZQGV.js} +2 -2
- package/dist/{chunk-K6MC66D6.js → chunk-PD5Q7D6Z.js} +2 -2
- package/dist/{chunk-AGINLNAW.js → chunk-Q6CAFGXT.js} +2 -2
- package/dist/chunk-ZZFXI3CS.js +8 -0
- package/dist/chunk-ZZFXI3CS.js.map +1 -0
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/{config-RWHSEE4N.js → config-ADS54KLC.js} +2 -2
- package/dist/config-mutator-WTRMBZTO.js +2 -0
- package/dist/doctor-T6RB4Q5X.js +2 -0
- package/dist/index.d.ts +191 -3
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/program-V7NGFB2R.js +2 -0
- package/dist/registry-42HEWCLA.js +2 -0
- package/dist/scheduler-C56ABAVP.js +2 -0
- package/dist/web/workflow-editor.global.js +11 -11
- package/dist/web/workflow-editor.global.js.map +1 -1
- package/dist/workspace-setup-DQCZX2NE.js +2 -0
- package/dist/workspace-setup-DQCZX2NE.js.map +1 -0
- package/package.json +2 -1
- package/dist/chunk-4MREHZP5.js.map +0 -1
- package/dist/chunk-5GDCJ2SF.js +0 -13
- package/dist/chunk-5GDCJ2SF.js.map +0 -1
- package/dist/chunk-5XZ73VM4.js +0 -102
- package/dist/chunk-5XZ73VM4.js.map +0 -1
- package/dist/chunk-BLRLUF2H.js +0 -743
- package/dist/chunk-BLRLUF2H.js.map +0 -1
- package/dist/chunk-EQNM3TOF.js +0 -15
- package/dist/chunk-EQNM3TOF.js.map +0 -1
- package/dist/chunk-IFQQVDM6.js +0 -442
- package/dist/chunk-IFQQVDM6.js.map +0 -1
- package/dist/chunk-ZE2YFX4K.js +0 -45
- package/dist/chunk-ZE2YFX4K.js.map +0 -1
- package/dist/config-mutator-JKCNCY2F.js +0 -2
- package/dist/doctor-KWN7NUFQ.js +0 -2
- package/dist/program-JEKM7SCS.js +0 -2
- package/dist/registry-EGKDMVSP.js +0 -2
- package/dist/scheduler-ED4FCI2Y.js +0 -2
- package/dist/workspace-setup-FPGN5VNY.js +0 -2
- /package/dist/{agent-I3ILI3MO.js.map → agent-FSE4KRLX.js.map} +0 -0
- /package/dist/{board-dashboard-ASI6MDKX.js.map → board-dashboard-PUACKWAN.js.map} +0 -0
- /package/dist/{config-RWHSEE4N.js.map → builtin-TQKMR42Z.js.map} +0 -0
- /package/dist/{chunk-FUYZUGNQ.js.map → chunk-4INOOHND.js.map} +0 -0
- /package/dist/{chunk-AANSVC5A.js.map → chunk-DXTIG5YV.js.map} +0 -0
- /package/dist/{chunk-2B2DIQKD.js.map → chunk-KWUWZQGV.js.map} +0 -0
- /package/dist/{chunk-K6MC66D6.js.map → chunk-PD5Q7D6Z.js.map} +0 -0
- /package/dist/{chunk-AGINLNAW.js.map → chunk-Q6CAFGXT.js.map} +0 -0
- /package/dist/{config-mutator-JKCNCY2F.js.map → config-ADS54KLC.js.map} +0 -0
- /package/dist/{doctor-KWN7NUFQ.js.map → config-mutator-WTRMBZTO.js.map} +0 -0
- /package/dist/{program-JEKM7SCS.js.map → doctor-T6RB4Q5X.js.map} +0 -0
- /package/dist/{registry-EGKDMVSP.js.map → program-V7NGFB2R.js.map} +0 -0
- /package/dist/{scheduler-ED4FCI2Y.js.map → registry-42HEWCLA.js.map} +0 -0
- /package/dist/{workspace-setup-FPGN5VNY.js.map → scheduler-C56ABAVP.js.map} +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -1366,6 +1366,34 @@ declare const agentConfigSchema: z.ZodObject<{
|
|
|
1366
1366
|
* agents that do long investigations or multi-file refactors. */
|
|
1367
1367
|
maxExecutionMinutes: z.ZodDefault<z.ZodNumber>;
|
|
1368
1368
|
permissionMode: z.ZodDefault<z.ZodString>;
|
|
1369
|
+
/** Improvement plan #3 — tool-use-required preset. When set,
|
|
1370
|
+
* AgentX inspects the stream-json events from each task and
|
|
1371
|
+
* fails the response with `tool_required_not_called: <name>`
|
|
1372
|
+
* when none of the listed tool names was invoked. Catches the
|
|
1373
|
+
* silent-degrade pattern observed when a model below the
|
|
1374
|
+
* capability bar (e.g. Haiku on a Write-required prompt)
|
|
1375
|
+
* produces a plausible-looking text response without ever
|
|
1376
|
+
* calling the required tool. Caller can retry with a stronger
|
|
1377
|
+
* model or sharpen the prompt.
|
|
1378
|
+
*
|
|
1379
|
+
* Tool names match the canonical Claude Code names ("Write",
|
|
1380
|
+
* "Edit", "Bash", "Read", …). Free-form so future tools work
|
|
1381
|
+
* without a schema bump. Empty/unset means no enforcement
|
|
1382
|
+
* (default — backward compatible). */
|
|
1383
|
+
toolUseRequired: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
1384
|
+
/** When true, this agent's claude-code dispatches reuse a long-lived
|
|
1385
|
+
* subprocess per (channel, chatId) instead of spawning a fresh
|
|
1386
|
+
* `claude -p` per turn. Driven over stdin via stream-json input,
|
|
1387
|
+
* which keeps the prompt cache warm across turns within a chat
|
|
1388
|
+
* (turn 1 cache_create=12897 → turn 2 cache_create=20 + cache_read
|
|
1389
|
+
* =24575 in the 2026-05-03 spike — 3-5× latency win on chat-shaped
|
|
1390
|
+
* workloads). When the registry can't allocate a slot (global or
|
|
1391
|
+
* per-agent cap exceeded), the dispatch falls back to spawn-per-task
|
|
1392
|
+
* silently with a warning log. Other tiers (sdk, orchestrator)
|
|
1393
|
+
* ignore this flag. Default false until the persistent path
|
|
1394
|
+
* finishes its soak; flip per-agent first, then per-fleet.
|
|
1395
|
+
* See docs/architecture/persistent-claude-process.md for the design. */
|
|
1396
|
+
persistentProcess: z.ZodDefault<z.ZodBoolean>;
|
|
1369
1397
|
queueMode: z.ZodDefault<z.ZodEnum<["collect", "followup", "drop"]>>;
|
|
1370
1398
|
heartbeat: z.ZodDefault<z.ZodObject<{
|
|
1371
1399
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -1399,6 +1427,8 @@ declare const agentConfigSchema: z.ZodObject<{
|
|
|
1399
1427
|
maxConcurrent: number;
|
|
1400
1428
|
maxExecutionMinutes: number;
|
|
1401
1429
|
permissionMode: string;
|
|
1430
|
+
toolUseRequired: string[];
|
|
1431
|
+
persistentProcess: boolean;
|
|
1402
1432
|
queueMode: "collect" | "followup" | "drop";
|
|
1403
1433
|
heartbeat: {
|
|
1404
1434
|
enabled: boolean;
|
|
@@ -1436,6 +1466,8 @@ declare const agentConfigSchema: z.ZodObject<{
|
|
|
1436
1466
|
maxConcurrent?: number | undefined;
|
|
1437
1467
|
maxExecutionMinutes?: number | undefined;
|
|
1438
1468
|
permissionMode?: string | undefined;
|
|
1469
|
+
toolUseRequired?: string[] | undefined;
|
|
1470
|
+
persistentProcess?: boolean | undefined;
|
|
1439
1471
|
queueMode?: "collect" | "followup" | "drop" | undefined;
|
|
1440
1472
|
heartbeat?: {
|
|
1441
1473
|
enabled?: boolean | undefined;
|
|
@@ -1606,6 +1638,34 @@ declare const daemonConfigSchema: z.ZodObject<{
|
|
|
1606
1638
|
* agents that do long investigations or multi-file refactors. */
|
|
1607
1639
|
maxExecutionMinutes: z.ZodDefault<z.ZodNumber>;
|
|
1608
1640
|
permissionMode: z.ZodDefault<z.ZodString>;
|
|
1641
|
+
/** Improvement plan #3 — tool-use-required preset. When set,
|
|
1642
|
+
* AgentX inspects the stream-json events from each task and
|
|
1643
|
+
* fails the response with `tool_required_not_called: <name>`
|
|
1644
|
+
* when none of the listed tool names was invoked. Catches the
|
|
1645
|
+
* silent-degrade pattern observed when a model below the
|
|
1646
|
+
* capability bar (e.g. Haiku on a Write-required prompt)
|
|
1647
|
+
* produces a plausible-looking text response without ever
|
|
1648
|
+
* calling the required tool. Caller can retry with a stronger
|
|
1649
|
+
* model or sharpen the prompt.
|
|
1650
|
+
*
|
|
1651
|
+
* Tool names match the canonical Claude Code names ("Write",
|
|
1652
|
+
* "Edit", "Bash", "Read", …). Free-form so future tools work
|
|
1653
|
+
* without a schema bump. Empty/unset means no enforcement
|
|
1654
|
+
* (default — backward compatible). */
|
|
1655
|
+
toolUseRequired: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
1656
|
+
/** When true, this agent's claude-code dispatches reuse a long-lived
|
|
1657
|
+
* subprocess per (channel, chatId) instead of spawning a fresh
|
|
1658
|
+
* `claude -p` per turn. Driven over stdin via stream-json input,
|
|
1659
|
+
* which keeps the prompt cache warm across turns within a chat
|
|
1660
|
+
* (turn 1 cache_create=12897 → turn 2 cache_create=20 + cache_read
|
|
1661
|
+
* =24575 in the 2026-05-03 spike — 3-5× latency win on chat-shaped
|
|
1662
|
+
* workloads). When the registry can't allocate a slot (global or
|
|
1663
|
+
* per-agent cap exceeded), the dispatch falls back to spawn-per-task
|
|
1664
|
+
* silently with a warning log. Other tiers (sdk, orchestrator)
|
|
1665
|
+
* ignore this flag. Default false until the persistent path
|
|
1666
|
+
* finishes its soak; flip per-agent first, then per-fleet.
|
|
1667
|
+
* See docs/architecture/persistent-claude-process.md for the design. */
|
|
1668
|
+
persistentProcess: z.ZodDefault<z.ZodBoolean>;
|
|
1609
1669
|
queueMode: z.ZodDefault<z.ZodEnum<["collect", "followup", "drop"]>>;
|
|
1610
1670
|
heartbeat: z.ZodDefault<z.ZodObject<{
|
|
1611
1671
|
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
@@ -1639,6 +1699,8 @@ declare const daemonConfigSchema: z.ZodObject<{
|
|
|
1639
1699
|
maxConcurrent: number;
|
|
1640
1700
|
maxExecutionMinutes: number;
|
|
1641
1701
|
permissionMode: string;
|
|
1702
|
+
toolUseRequired: string[];
|
|
1703
|
+
persistentProcess: boolean;
|
|
1642
1704
|
queueMode: "collect" | "followup" | "drop";
|
|
1643
1705
|
heartbeat: {
|
|
1644
1706
|
enabled: boolean;
|
|
@@ -1676,6 +1738,8 @@ declare const daemonConfigSchema: z.ZodObject<{
|
|
|
1676
1738
|
maxConcurrent?: number | undefined;
|
|
1677
1739
|
maxExecutionMinutes?: number | undefined;
|
|
1678
1740
|
permissionMode?: string | undefined;
|
|
1741
|
+
toolUseRequired?: string[] | undefined;
|
|
1742
|
+
persistentProcess?: boolean | undefined;
|
|
1679
1743
|
queueMode?: "collect" | "followup" | "drop" | undefined;
|
|
1680
1744
|
heartbeat?: {
|
|
1681
1745
|
enabled?: boolean | undefined;
|
|
@@ -2888,6 +2952,22 @@ declare const daemonConfigSchema: z.ZodObject<{
|
|
|
2888
2952
|
}>, "many">>;
|
|
2889
2953
|
workTickMinutes: z.ZodDefault<z.ZodNumber>;
|
|
2890
2954
|
idleQueueThreshold: z.ZodDefault<z.ZodNumber>;
|
|
2955
|
+
standup: z.ZodDefault<z.ZodObject<{
|
|
2956
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
2957
|
+
plansDir: z.ZodDefault<z.ZodString>;
|
|
2958
|
+
maxAgentsPerDay: z.ZodDefault<z.ZodNumber>;
|
|
2959
|
+
dryRun: z.ZodDefault<z.ZodBoolean>;
|
|
2960
|
+
}, "strip", z.ZodTypeAny, {
|
|
2961
|
+
enabled: boolean;
|
|
2962
|
+
plansDir: string;
|
|
2963
|
+
maxAgentsPerDay: number;
|
|
2964
|
+
dryRun: boolean;
|
|
2965
|
+
}, {
|
|
2966
|
+
enabled?: boolean | undefined;
|
|
2967
|
+
plansDir?: string | undefined;
|
|
2968
|
+
maxAgentsPerDay?: number | undefined;
|
|
2969
|
+
dryRun?: boolean | undefined;
|
|
2970
|
+
}>>;
|
|
2891
2971
|
}, "strip", z.ZodTypeAny, {
|
|
2892
2972
|
enabled: boolean;
|
|
2893
2973
|
projects: {
|
|
@@ -2943,6 +3023,12 @@ declare const daemonConfigSchema: z.ZodObject<{
|
|
|
2943
3023
|
}[];
|
|
2944
3024
|
workTickMinutes: number;
|
|
2945
3025
|
idleQueueThreshold: number;
|
|
3026
|
+
standup: {
|
|
3027
|
+
enabled: boolean;
|
|
3028
|
+
plansDir: string;
|
|
3029
|
+
maxAgentsPerDay: number;
|
|
3030
|
+
dryRun: boolean;
|
|
3031
|
+
};
|
|
2946
3032
|
}, {
|
|
2947
3033
|
mainChannel: {
|
|
2948
3034
|
channel: string;
|
|
@@ -2998,6 +3084,12 @@ declare const daemonConfigSchema: z.ZodObject<{
|
|
|
2998
3084
|
}[] | undefined;
|
|
2999
3085
|
workTickMinutes?: number | undefined;
|
|
3000
3086
|
idleQueueThreshold?: number | undefined;
|
|
3087
|
+
standup?: {
|
|
3088
|
+
enabled?: boolean | undefined;
|
|
3089
|
+
plansDir?: string | undefined;
|
|
3090
|
+
maxAgentsPerDay?: number | undefined;
|
|
3091
|
+
dryRun?: boolean | undefined;
|
|
3092
|
+
} | undefined;
|
|
3001
3093
|
}>>;
|
|
3002
3094
|
boards: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
3003
3095
|
id: z.ZodString;
|
|
@@ -3399,6 +3491,8 @@ declare const daemonConfigSchema: z.ZodObject<{
|
|
|
3399
3491
|
maxConcurrent: number;
|
|
3400
3492
|
maxExecutionMinutes: number;
|
|
3401
3493
|
permissionMode: string;
|
|
3494
|
+
toolUseRequired: string[];
|
|
3495
|
+
persistentProcess: boolean;
|
|
3402
3496
|
queueMode: "collect" | "followup" | "drop";
|
|
3403
3497
|
heartbeat: {
|
|
3404
3498
|
enabled: boolean;
|
|
@@ -3750,6 +3844,12 @@ declare const daemonConfigSchema: z.ZodObject<{
|
|
|
3750
3844
|
}[];
|
|
3751
3845
|
workTickMinutes: number;
|
|
3752
3846
|
idleQueueThreshold: number;
|
|
3847
|
+
standup: {
|
|
3848
|
+
enabled: boolean;
|
|
3849
|
+
plansDir: string;
|
|
3850
|
+
maxAgentsPerDay: number;
|
|
3851
|
+
dryRun: boolean;
|
|
3852
|
+
};
|
|
3753
3853
|
} | undefined;
|
|
3754
3854
|
}, {
|
|
3755
3855
|
node: {
|
|
@@ -3778,6 +3878,8 @@ declare const daemonConfigSchema: z.ZodObject<{
|
|
|
3778
3878
|
maxConcurrent?: number | undefined;
|
|
3779
3879
|
maxExecutionMinutes?: number | undefined;
|
|
3780
3880
|
permissionMode?: string | undefined;
|
|
3881
|
+
toolUseRequired?: string[] | undefined;
|
|
3882
|
+
persistentProcess?: boolean | undefined;
|
|
3781
3883
|
queueMode?: "collect" | "followup" | "drop" | undefined;
|
|
3782
3884
|
heartbeat?: {
|
|
3783
3885
|
enabled?: boolean | undefined;
|
|
@@ -4042,6 +4144,12 @@ declare const daemonConfigSchema: z.ZodObject<{
|
|
|
4042
4144
|
}[] | undefined;
|
|
4043
4145
|
workTickMinutes?: number | undefined;
|
|
4044
4146
|
idleQueueThreshold?: number | undefined;
|
|
4147
|
+
standup?: {
|
|
4148
|
+
enabled?: boolean | undefined;
|
|
4149
|
+
plansDir?: string | undefined;
|
|
4150
|
+
maxAgentsPerDay?: number | undefined;
|
|
4151
|
+
dryRun?: boolean | undefined;
|
|
4152
|
+
} | undefined;
|
|
4045
4153
|
} | undefined;
|
|
4046
4154
|
boards?: {
|
|
4047
4155
|
id: string;
|
|
@@ -4376,6 +4484,13 @@ declare class AgentXDaemon {
|
|
|
4376
4484
|
private loadedPlugins;
|
|
4377
4485
|
private readonly agentMemory;
|
|
4378
4486
|
private contacts;
|
|
4487
|
+
/** Persistent-claude process registry. Null when no agent has
|
|
4488
|
+
* persistentProcess: true (legacy spawn-per-task path). */
|
|
4489
|
+
private processRegistry;
|
|
4490
|
+
/** Unified observability bus. Publishers (workflow engine, mesh,
|
|
4491
|
+
* channels, signals) emit here; subscribers (SSE, CLI, board
|
|
4492
|
+
* dashboard) filter by kind / workflow / actor. Created eagerly so
|
|
4493
|
+
* early boot events don't fall through. */
|
|
4379
4494
|
readonly events: EventBus;
|
|
4380
4495
|
private log;
|
|
4381
4496
|
private sseClients;
|
|
@@ -4728,6 +4843,27 @@ interface AgentTask {
|
|
|
4728
4843
|
eventId: string;
|
|
4729
4844
|
decidedBy: string;
|
|
4730
4845
|
};
|
|
4846
|
+
/** ULID for the per-execution trace row in task_traces (improvement
|
|
4847
|
+
* plan #2). Allocated by registry.execute right before emitting the
|
|
4848
|
+
* task:started bus event so per-step capture sites in the streaming
|
|
4849
|
+
* parser can append rows under the same id. Optional — when unset,
|
|
4850
|
+
* step capture is a no-op. */
|
|
4851
|
+
taskId?: string;
|
|
4852
|
+
/** Improvement plan #8 — when true, the dispatcher discards any
|
|
4853
|
+
* cached session for this (agent, channel, chatId) before
|
|
4854
|
+
* executing: the claudeSessionId is cleared (no --resume) and
|
|
4855
|
+
* any persistent-process handle is killed so the next dispatch
|
|
4856
|
+
* spawns fresh. Use from triage→sub-agent delegation paths where
|
|
4857
|
+
* the caller knows this is a NEW visitor on a chatId that may
|
|
4858
|
+
* collide with prior conversations.
|
|
4859
|
+
*
|
|
4860
|
+
* Caught in benchmark Run 3 (2026-05-04): a triage agent
|
|
4861
|
+
* delegated to "lead" for a brand-new visitor; lead's warm
|
|
4862
|
+
* persistent process replied with the previous visitor's
|
|
4863
|
+
* confirmation message. freshSession: true defends against
|
|
4864
|
+
* that pattern without requiring callers to invent unique
|
|
4865
|
+
* chatIds. */
|
|
4866
|
+
freshSession?: boolean;
|
|
4731
4867
|
context?: {
|
|
4732
4868
|
channel?: string;
|
|
4733
4869
|
sender?: string;
|
|
@@ -4811,9 +4947,6 @@ declare function executeSdk(agent: AgentDef, task: AgentTask, apiKey: string, hi
|
|
|
4811
4947
|
* Execute a task using agentx's own orchestrator (tier: "orchestrator").
|
|
4812
4948
|
*/
|
|
4813
4949
|
declare function executeOrchestrator(agent: AgentDef, task: AgentTask, apiKey?: string, historyContext?: string): Promise<AgentResponse>;
|
|
4814
|
-
/**
|
|
4815
|
-
* Route a task to the correct execution tier.
|
|
4816
|
-
*/
|
|
4817
4950
|
declare function executeTask(agent: AgentDef, task: AgentTask, providers: Record<string, {
|
|
4818
4951
|
apiKey?: string;
|
|
4819
4952
|
}>, onDelta?: StreamCallback, historyContext?: string, resumeSessionId?: string, onEvent?: (event: any) => void): Promise<AgentResponse>;
|
|
@@ -6952,6 +7085,37 @@ declare const businessConfigSchema: z.ZodObject<{
|
|
|
6952
7085
|
workTickMinutes: z.ZodDefault<z.ZodNumber>;
|
|
6953
7086
|
/** Max queue depth for an idle agent before skipping the work tick (avoids piling up). */
|
|
6954
7087
|
idleQueueThreshold: z.ZodDefault<z.ZodNumber>;
|
|
7088
|
+
/** Standup-tick gating + plan-driven priorities. The day-cycle's morning
|
|
7089
|
+
* STANDUP used to fire unconditionally per agent — operators reported it
|
|
7090
|
+
* as "mechanical" because it dispatched a Claude turn even when no human
|
|
7091
|
+
* had set a plan for the day. Now: the cycle reads
|
|
7092
|
+
* .agentx/plans/<date>.md (day → week → month fallback) and either
|
|
7093
|
+
* injects the plan as standup priorities, or posts a "no plan today"
|
|
7094
|
+
* notification to mainChannel and dispatches no agent. */
|
|
7095
|
+
standup: z.ZodDefault<z.ZodObject<{
|
|
7096
|
+
/** Master switch. When false, fireStandup is a no-op (silent). */
|
|
7097
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
7098
|
+
/** Plans directory, relative to the daemon CWD. */
|
|
7099
|
+
plansDir: z.ZodDefault<z.ZodString>;
|
|
7100
|
+
/** Hard ceiling on how many agents the standup tick can dispatch in a
|
|
7101
|
+
* single morning — guards against an org-chart misconfiguration
|
|
7102
|
+
* fanning out to dozens of Claude calls before anyone notices. */
|
|
7103
|
+
maxAgentsPerDay: z.ZodDefault<z.ZodNumber>;
|
|
7104
|
+
/** When true, even with a plan present the cycle won't dispatch — only
|
|
7105
|
+
* posts the resolved plan to mainChannel for human review. Useful as
|
|
7106
|
+
* a kill-switch while iterating on plan formats. */
|
|
7107
|
+
dryRun: z.ZodDefault<z.ZodBoolean>;
|
|
7108
|
+
}, "strip", z.ZodTypeAny, {
|
|
7109
|
+
enabled: boolean;
|
|
7110
|
+
plansDir: string;
|
|
7111
|
+
maxAgentsPerDay: number;
|
|
7112
|
+
dryRun: boolean;
|
|
7113
|
+
}, {
|
|
7114
|
+
enabled?: boolean | undefined;
|
|
7115
|
+
plansDir?: string | undefined;
|
|
7116
|
+
maxAgentsPerDay?: number | undefined;
|
|
7117
|
+
dryRun?: boolean | undefined;
|
|
7118
|
+
}>>;
|
|
6955
7119
|
}, "strip", z.ZodTypeAny, {
|
|
6956
7120
|
enabled: boolean;
|
|
6957
7121
|
projects: {
|
|
@@ -7007,6 +7171,12 @@ declare const businessConfigSchema: z.ZodObject<{
|
|
|
7007
7171
|
}[];
|
|
7008
7172
|
workTickMinutes: number;
|
|
7009
7173
|
idleQueueThreshold: number;
|
|
7174
|
+
standup: {
|
|
7175
|
+
enabled: boolean;
|
|
7176
|
+
plansDir: string;
|
|
7177
|
+
maxAgentsPerDay: number;
|
|
7178
|
+
dryRun: boolean;
|
|
7179
|
+
};
|
|
7010
7180
|
}, {
|
|
7011
7181
|
mainChannel: {
|
|
7012
7182
|
channel: string;
|
|
@@ -7062,6 +7232,12 @@ declare const businessConfigSchema: z.ZodObject<{
|
|
|
7062
7232
|
}[] | undefined;
|
|
7063
7233
|
workTickMinutes?: number | undefined;
|
|
7064
7234
|
idleQueueThreshold?: number | undefined;
|
|
7235
|
+
standup?: {
|
|
7236
|
+
enabled?: boolean | undefined;
|
|
7237
|
+
plansDir?: string | undefined;
|
|
7238
|
+
maxAgentsPerDay?: number | undefined;
|
|
7239
|
+
dryRun?: boolean | undefined;
|
|
7240
|
+
} | undefined;
|
|
7065
7241
|
}>;
|
|
7066
7242
|
type BusinessConfig = z.infer<typeof businessConfigSchema>;
|
|
7067
7243
|
type BusinessRole = z.infer<typeof roleSchema>;
|
|
@@ -7295,6 +7471,9 @@ declare class DayCycle {
|
|
|
7295
7471
|
private day;
|
|
7296
7472
|
private currentDate;
|
|
7297
7473
|
private runningTask;
|
|
7474
|
+
private standupsFiredToday;
|
|
7475
|
+
private noPlanNoticePostedFor?;
|
|
7476
|
+
private planStore;
|
|
7298
7477
|
constructor(config: BusinessConfig, org: Organization, schedule: Schedule, registry: AgentRegistry, reporter: Reporter, kpi: KPI, workSource: WorkSource, daemonBase: string, log: (...args: unknown[]) => void);
|
|
7299
7478
|
start(): void;
|
|
7300
7479
|
stop(): void;
|
|
@@ -7302,6 +7481,15 @@ declare class DayCycle {
|
|
|
7302
7481
|
private roleContext;
|
|
7303
7482
|
private runLifecycle;
|
|
7304
7483
|
private fireStandup;
|
|
7484
|
+
/** Post one "no plan today" line to mainChannel per calendar date. After
|
|
7485
|
+
* the first STANDUP would have fired, we let the team know the cycle
|
|
7486
|
+
* saw nothing to do — quiet enough not to be annoying, loud enough that
|
|
7487
|
+
* a forgotten plan doesn't go unnoticed for a whole morning. */
|
|
7488
|
+
private postNoPlanNoticeOnce;
|
|
7489
|
+
/** Dry-run preview: post the resolved plan to the main channel so the
|
|
7490
|
+
* operator can eyeball it before turning dryRun off. Once per day per
|
|
7491
|
+
* resolved plan. */
|
|
7492
|
+
private postPlanPreviewOnce;
|
|
7305
7493
|
private fireWorkTick;
|
|
7306
7494
|
private fireWrap;
|
|
7307
7495
|
}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as U}from"./chunk-4ITQP3XL.js";import{a as yt,b as re,c as ae,d as vt,e as xt,f as Ct,
|
|
1
|
+
import{a as U}from"./chunk-4ITQP3XL.js";import{a as yt,b as re,c as ae,d as vt,e as xt,f as Ct,j as bt,k as $t,l as Tt}from"./chunk-EQPUB7CZ.js";import"./chunk-BOUKM2PS.js";import"./chunk-N67JZAXU.js";import"./chunk-AFRHKA7B.js";import"./chunk-EW27SCCC.js";import{A as H,B as E,C as I,a as be,b as $e,c as Te,d as je,e as _e,f as Ue,g as Be,h as We,i as qe,j as Ve,k as Ye,l as F,m as Q,n as Ze,o as et,p as tt,q as j,r as st,s as ot,t as nt,u as P,v as Z,w as it,x as rt,y as at,z as ht}from"./chunk-Q6CAFGXT.js";import{a as X,b as M,c as _}from"./chunk-SFQUP3BP.js";import"./chunk-ZZFXI3CS.js";import{f as Pt}from"./chunk-PD5Q7D6Z.js";import"./chunk-DXTIG5YV.js";import{c as kt,e as wt,f as St}from"./chunk-EK37JHJI.js";import"./chunk-BHSPAP4U.js";import"./chunk-CDNWCYF7.js";import{d as lt,e as ct,f as dt,g as pt,q as ut}from"./chunk-72PAN7UI.js";import"./chunk-5F3J55LG.js";import"./chunk-GOLZ6NEL.js";import"./chunk-WJXU5F4Z.js";import"./chunk-VWTBHLMX.js";import{a as gt,b as mt,e as ft}from"./chunk-7P5QRX5W.js";import"./chunk-JTJIPNXY.js";import"./chunk-64P4QHSZ.js";import"./chunk-BFZUG66X.js";import"./chunk-SR3X25TN.js";import"./chunk-53NRX2NA.js";import"./chunk-A6BKSZQA.js";import{a as Re,b as Ae,c as Me,d as Ee,e as Ie,f as Oe,g as Ge,h as De,i as Le,j as Ne,k as Fe,l as A}from"./chunk-JGXE2YNV.js";import{a as m}from"./chunk-VJUTQAPJ.js";import{a as He,b as Je,c as N,d as Ke}from"./chunk-DJEZ2HVU.js";import{a as ze,b as Xe,e as Qe}from"./chunk-DSYKYZMT.js";import"./chunk-IKBHHTIT.js";import"./chunk-QOYAX2FT.js";import"./chunk-4YCH6IZV.js";import{execa as Rt}from"execa";import{existsSync as le,promises as ee}from"fs";import x from"path";import pe from"node-fetch";async function At(n,e){let t=n.split("/");if(t.length<2)throw new Error(`Invalid skill package ID: ${n}. Expected format: owner/repo`);let s=t[0],i=t[1],o=t[2];try{let a=o?`${s}/${i}/${o}`:`${s}/${i}`;await Rt("npx",["-y","skills","add",a],{cwd:e,stdio:"pipe"}),m.success(`Installed skill package: ${n}`);let r=x.resolve(e,".skills",`${s}_${i}`);if(le(r))return await de(r,n);let l=x.resolve(e,".skills");return le(l)?await de(l,n):[]}catch{return m.info(`Fetching skills directly from GitHub: ${s}/${i}`),await Mt(s,i,o,e)}}async function Mt(n,e,t,s){let i=[];try{let o=`https://api.github.com/repos/${n}/${e}/git/trees/main?recursive=1`,a=await pe(o);if(!a.ok)throw new Error(`GitHub API error: ${a.status}`);let l=(await a.json()).tree.filter(c=>c.type==="blob"&&c.path.endsWith("SKILL.md"));if(t){let c=l.find(g=>g.path.includes(`/${t}/`)||g.path===`${t}/SKILL.md`);if(c){let g=await ce(n,e,c.path,s);g&&i.push(g)}}else for(let c of l){let g=await ce(n,e,c.path,s);g&&i.push(g)}}catch(o){m.error(`Failed to fetch skills from GitHub: ${o.message}`)}return i}async function ce(n,e,t,s){try{let i=`https://raw.githubusercontent.com/${n}/${e}/main/${t}`,o=await pe(i);if(!o.ok)return null;let a=await o.text(),r=N(a);if(r){r.source="remote",r.packageId=`${n}/${e}`;let l=x.dirname(t),c=x.resolve(s,".skills",`${n}_${e}`,l);await ee.mkdir(c,{recursive:!0}),await ee.writeFile(x.resolve(c,"SKILL.md"),a),r.path=x.resolve(c,"SKILL.md")}return r}catch{return null}}async function de(n,e){let t=[],{default:s}=await import("fast-glob"),i=await s.glob("**/SKILL.md",{cwd:n,deep:5});for(let o of i)try{let a=x.resolve(n,o),r=await ee.readFile(a,"utf8"),l=N(r);l&&(l.source="remote",l.path=a,l.packageId=e,t.push(l))}catch{}return t}async function Et(n,e,t,s,i){let o=["---",`name: ${n}`,`description: ${e}`];if(s?.length){o.push("tags:");for(let a of s)o.push(` - ${a}`)}if(i?.length){o.push("globs:");for(let a of i)o.push(` - ${a}`)}return o.push("---"),`${o.join(`
|
|
2
2
|
`)}
|
|
3
3
|
|
|
4
4
|
${t}`}async function It(n){let{loadLocalSkills:e}=await import("./loader-5CA3O5GM.js");return e(n)}async function Ot(n,e,t,s,i){let a=[{role:"system",content:`You are a skill author for the Agent Skills ecosystem (skills.sh).
|