@agentuity/opencode 1.0.0 → 1.0.2
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/AGENTS.md +121 -13
- package/README.md +133 -12
- package/dist/agents/architect.d.ts +1 -1
- package/dist/agents/architect.d.ts.map +1 -1
- package/dist/agents/architect.js +2 -2
- package/dist/agents/builder.d.ts +1 -1
- package/dist/agents/builder.d.ts.map +1 -1
- package/dist/agents/builder.js +2 -2
- package/dist/agents/builder.js.map +1 -1
- package/dist/agents/expert-backend.d.ts +4 -0
- package/dist/agents/expert-backend.d.ts.map +1 -0
- package/dist/agents/expert-backend.js +493 -0
- package/dist/agents/expert-backend.js.map +1 -0
- package/dist/agents/expert-frontend.d.ts +4 -0
- package/dist/agents/expert-frontend.d.ts.map +1 -0
- package/dist/agents/expert-frontend.js +480 -0
- package/dist/agents/expert-frontend.js.map +1 -0
- package/dist/agents/expert-ops.d.ts +4 -0
- package/dist/agents/expert-ops.d.ts.map +1 -0
- package/dist/agents/expert-ops.js +375 -0
- package/dist/agents/expert-ops.js.map +1 -0
- package/dist/agents/expert.d.ts +1 -1
- package/dist/agents/expert.d.ts.map +1 -1
- package/dist/agents/expert.js +172 -913
- package/dist/agents/expert.js.map +1 -1
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +8 -2
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/lead.d.ts +1 -1
- package/dist/agents/lead.d.ts.map +1 -1
- package/dist/agents/lead.js +359 -58
- package/dist/agents/lead.js.map +1 -1
- package/dist/agents/memory/entities.d.ts.map +1 -1
- package/dist/agents/memory/entities.js +5 -2
- package/dist/agents/memory/entities.js.map +1 -1
- package/dist/agents/memory.d.ts +1 -1
- package/dist/agents/memory.d.ts.map +1 -1
- package/dist/agents/memory.js +285 -10
- package/dist/agents/memory.js.map +1 -1
- package/dist/agents/monitor.d.ts +4 -0
- package/dist/agents/monitor.d.ts.map +1 -0
- package/dist/agents/monitor.js +106 -0
- package/dist/agents/monitor.js.map +1 -0
- package/dist/agents/product.d.ts +1 -1
- package/dist/agents/product.d.ts.map +1 -1
- package/dist/agents/product.js +161 -21
- package/dist/agents/product.js.map +1 -1
- package/dist/agents/reasoner.d.ts +1 -1
- package/dist/agents/reasoner.d.ts.map +1 -1
- package/dist/agents/reasoner.js +94 -11
- package/dist/agents/reasoner.js.map +1 -1
- package/dist/agents/scout.d.ts +1 -1
- package/dist/agents/scout.d.ts.map +1 -1
- package/dist/agents/scout.js +6 -4
- package/dist/agents/scout.js.map +1 -1
- package/dist/agents/types.d.ts +6 -0
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/background/manager.d.ts +22 -1
- package/dist/background/manager.d.ts.map +1 -1
- package/dist/background/manager.js +218 -1
- package/dist/background/manager.js.map +1 -1
- package/dist/background/types.d.ts +19 -0
- package/dist/background/types.d.ts.map +1 -1
- package/dist/config/loader.d.ts +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +10 -1
- package/dist/config/loader.js.map +1 -1
- package/dist/plugin/hooks/cadence.d.ts +2 -1
- package/dist/plugin/hooks/cadence.d.ts.map +1 -1
- package/dist/plugin/hooks/cadence.js +66 -3
- package/dist/plugin/hooks/cadence.js.map +1 -1
- package/dist/plugin/hooks/keyword.d.ts.map +1 -1
- package/dist/plugin/hooks/keyword.js +5 -3
- package/dist/plugin/hooks/keyword.js.map +1 -1
- package/dist/plugin/hooks/session-memory.d.ts +2 -1
- package/dist/plugin/hooks/session-memory.d.ts.map +1 -1
- package/dist/plugin/hooks/session-memory.js +57 -5
- package/dist/plugin/hooks/session-memory.js.map +1 -1
- package/dist/plugin/hooks/tools.d.ts.map +1 -1
- package/dist/plugin/hooks/tools.js +28 -5
- package/dist/plugin/hooks/tools.js.map +1 -1
- package/dist/plugin/plugin.d.ts.map +1 -1
- package/dist/plugin/plugin.js +119 -68
- package/dist/plugin/plugin.js.map +1 -1
- package/dist/services/auth.d.ts.map +1 -1
- package/dist/services/auth.js +9 -0
- package/dist/services/auth.js.map +1 -1
- package/dist/tmux/executor.d.ts.map +1 -1
- package/dist/tmux/executor.js +13 -4
- package/dist/tmux/executor.js.map +1 -1
- package/dist/tools/background.d.ts +4 -1
- package/dist/tools/background.d.ts.map +1 -1
- package/dist/tools/index.d.ts +0 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +0 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/types.d.ts +4 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -1
- package/dist/types.js.map +1 -1
- package/package.json +3 -3
- package/src/agents/architect.ts +2 -2
- package/src/agents/builder.ts +2 -2
- package/src/agents/expert-backend.ts +495 -0
- package/src/agents/expert-frontend.ts +482 -0
- package/src/agents/expert-ops.ts +377 -0
- package/src/agents/expert.ts +172 -913
- package/src/agents/index.ts +8 -2
- package/src/agents/lead.ts +359 -58
- package/src/agents/memory/entities.ts +10 -2
- package/src/agents/memory.ts +285 -10
- package/src/agents/monitor.ts +108 -0
- package/src/agents/product.ts +161 -21
- package/src/agents/reasoner.ts +94 -11
- package/src/agents/scout.ts +6 -4
- package/src/agents/types.ts +6 -0
- package/src/background/manager.ts +259 -2
- package/src/background/types.ts +17 -0
- package/src/config/loader.ts +11 -1
- package/src/plugin/hooks/cadence.ts +79 -3
- package/src/plugin/hooks/keyword.ts +5 -3
- package/src/plugin/hooks/session-memory.ts +68 -6
- package/src/plugin/hooks/tools.ts +40 -14
- package/src/plugin/plugin.ts +128 -70
- package/src/services/auth.ts +10 -0
- package/src/tmux/executor.ts +13 -4
- package/src/tools/index.ts +0 -1
- package/src/types.ts +4 -1
- package/dist/agents/planner.d.ts +0 -4
- package/dist/agents/planner.d.ts.map +0 -1
- package/dist/agents/planner.js +0 -158
- package/dist/agents/planner.js.map +0 -1
- package/dist/tools/delegate.d.ts +0 -45
- package/dist/tools/delegate.d.ts.map +0 -1
- package/dist/tools/delegate.js +0 -72
- package/dist/tools/delegate.js.map +0 -1
- package/src/agents/planner.ts +0 -161
- package/src/tools/delegate.ts +0 -83
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"background.d.ts","sourceRoot":"","sources":["../../src/tools/background.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,eAAO,MAAM,wBAAwB
|
|
1
|
+
{"version":3,"file":"background.d.ts","sourceRoot":"","sources":["../../src/tools/background.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;iBAInC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;iBAErC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;iBAErC,CAAC;AAEH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC1E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC9E,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,iBAAiB,GAAG;IAClE,kBAAkB,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,OAAO,wBAAwB,CAAC;QACtC,OAAO,EAAE,CACR,IAAI,EAAE,kBAAkB,EACxB,OAAO,EAAE,WAAW,KAChB,OAAO,CAAC;YACZ,MAAM,EAAE,MAAM,CAAC;YACf,MAAM,EAAE,MAAM,CAAC;YACf,OAAO,EAAE,MAAM,CAAC;SAChB,CAAC,CAAC;KACH,CAAC;IACF,oBAAoB,EAAE;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,OAAO,0BAA0B,CAAC;QACxC,OAAO,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,OAAO,CAAC;YAChD,MAAM,EAAE,MAAM,CAAC;YACf,MAAM,EAAE,MAAM,CAAC;YACf,MAAM,CAAC,EAAE,MAAM,CAAC;YAChB,KAAK,CAAC,EAAE,MAAM,CAAC;SACf,CAAC,CAAC;KACH,CAAC;IACF,oBAAoB,EAAE;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,OAAO,0BAA0B,CAAC;QACxC,OAAO,EAAE,CAAC,IAAI,EAAE,oBAAoB,KAAK,OAAO,CAAC;YAChD,MAAM,EAAE,MAAM,CAAC;YACf,OAAO,EAAE,OAAO,CAAC;YACjB,OAAO,EAAE,MAAM,CAAC;SAChB,CAAC,CAAC;KACH,CAAC;CACF,CA+EA"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
export { delegateTool, DelegateArgsSchema, type DelegateArgs } from './delegate';
|
|
2
1
|
export { createBackgroundTools, BackgroundTaskArgsSchema, BackgroundOutputArgsSchema, BackgroundCancelArgsSchema, type BackgroundTaskArgs, type BackgroundOutputArgs, type BackgroundCancelArgs, } from './background';
|
|
3
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,EAC1B,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GACzB,MAAM,cAAc,CAAC"}
|
package/dist/tools/index.js
CHANGED
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,qBAAqB,EACrB,wBAAwB,EACxB,0BAA0B,EAC1B,0BAA0B,GAI1B,MAAM,cAAc,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -14,10 +14,13 @@ export declare const AgentRoleSchema: z.ZodEnum<{
|
|
|
14
14
|
reviewer: "reviewer";
|
|
15
15
|
memory: "memory";
|
|
16
16
|
expert: "expert";
|
|
17
|
-
|
|
17
|
+
"expert-backend": "expert-backend";
|
|
18
|
+
"expert-frontend": "expert-frontend";
|
|
19
|
+
"expert-ops": "expert-ops";
|
|
18
20
|
runner: "runner";
|
|
19
21
|
reasoner: "reasoner";
|
|
20
22
|
product: "product";
|
|
23
|
+
monitor: "monitor";
|
|
21
24
|
}>;
|
|
22
25
|
export type AgentRole = z.infer<typeof AgentRoleSchema>;
|
|
23
26
|
export declare const TaskStatusSchema: z.ZodEnum<{
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG/C,YAAY,EACX,MAAM,EACN,WAAW,EACX,KAAK,IAAI,WAAW,EACpB,cAAc,GACd,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC/D,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACrF,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -7,10 +7,13 @@ export const AgentRoleSchema = z.enum([
|
|
|
7
7
|
'reviewer',
|
|
8
8
|
'memory',
|
|
9
9
|
'expert',
|
|
10
|
-
'
|
|
10
|
+
'expert-backend',
|
|
11
|
+
'expert-frontend',
|
|
12
|
+
'expert-ops',
|
|
11
13
|
'runner',
|
|
12
14
|
'reasoner',
|
|
13
15
|
'product',
|
|
16
|
+
'monitor',
|
|
14
17
|
]);
|
|
15
18
|
export const TaskStatusSchema = z.enum(['pending', 'running', 'completed', 'failed', 'cancelled']);
|
|
16
19
|
export const OrchestrationPatternSchema = z.enum(['single', 'fanout', 'pipeline']);
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IACrC,MAAM;IACN,OAAO;IACP,SAAS;IACT,WAAW;IACX,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiBxB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IACrC,MAAM;IACN,OAAO;IACP,SAAS;IACT,WAAW;IACX,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,gBAAgB;IAChB,iBAAiB;IACjB,YAAY;IACZ,QAAQ;IACR,UAAU;IACV,SAAS;IACT,SAAS;CACT,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;AAGnG,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;AAGnF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC;IACzC,SAAS;IACT,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,WAAW;CACX,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;AAgEvF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACrC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAGH,yCAAyC;AACzC,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAGhF,kDAAkD;AAClD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAmB3E,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChD,OAAO,EAAE,kBAAkB,CAAC,QAAQ,EAAE;IACtC,eAAe,EAAE,qBAAqB,CAAC,QAAQ,EAAE;IACjD,QAAQ,EAAE,oBAAoB,CAAC,QAAQ,EAAE;IACzC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAYH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC9B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE;IAC1B,mBAAmB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAChE,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC7D,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE;IAC5B,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE;CAC7B,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC5C,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC/C,UAAU,EAAE,0BAA0B,CAAC,QAAQ,EAAE;IACjD,MAAM,EAAE,kBAAkB,CAAC,QAAQ,EAAE;IACrC,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAuBH,+DAA+D"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentuity/opencode",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"author": "Agentuity employees and contributors",
|
|
6
6
|
"description": "Agentuity Open Code plugin with specialized AI coding agents",
|
|
@@ -40,13 +40,13 @@
|
|
|
40
40
|
"prepublishOnly": "bun run clean && bun run build"
|
|
41
41
|
},
|
|
42
42
|
"dependencies": {
|
|
43
|
-
"@agentuity/core": "1.0.
|
|
43
|
+
"@agentuity/core": "1.0.2",
|
|
44
44
|
"@opencode-ai/plugin": "^1.1.36",
|
|
45
45
|
"yaml": "^2.8.1",
|
|
46
46
|
"zod": "^4.3.5"
|
|
47
47
|
},
|
|
48
48
|
"devDependencies": {
|
|
49
|
-
"@agentuity/test-utils": "1.0.
|
|
49
|
+
"@agentuity/test-utils": "1.0.2",
|
|
50
50
|
"@types/bun": "latest",
|
|
51
51
|
"bun-types": "latest",
|
|
52
52
|
"typescript": "^5.9.0"
|
package/src/agents/architect.ts
CHANGED
|
@@ -178,7 +178,7 @@ agentuity cloud sandbox create --json --runtime bun:1 --network
|
|
|
178
178
|
| Situation | Action |
|
|
179
179
|
|-----------|--------|
|
|
180
180
|
| Blocked on unclear requirements | Ask Lead via checkpoint |
|
|
181
|
-
| Need architectural guidance |
|
|
181
|
+
| Need architectural guidance | Ask Lead (Lead handles strategic planning) |
|
|
182
182
|
| Cloud service setup needed | Ask Expert agent |
|
|
183
183
|
| Past implementation exists | Consult Memory agent |
|
|
184
184
|
| Implementation complete | Request Reviewer |
|
|
@@ -259,7 +259,7 @@ export const architectAgent: AgentDefinition = {
|
|
|
259
259
|
displayName: 'Agentuity Coder Architect',
|
|
260
260
|
description:
|
|
261
261
|
'Senior implementer for complex autonomous tasks - Cadence mode, deep reasoning, extended execution',
|
|
262
|
-
defaultModel: 'openai/gpt-5.
|
|
262
|
+
defaultModel: 'openai/gpt-5.3-codex',
|
|
263
263
|
systemPrompt: ARCHITECT_SYSTEM_PROMPT,
|
|
264
264
|
reasoningEffort: 'xhigh', // Maximum reasoning for complex tasks
|
|
265
265
|
temperature: 0.1, // Deterministic - precise code generation
|
package/src/agents/builder.ts
CHANGED
|
@@ -10,7 +10,7 @@ You are the Builder agent on the Agentuity Coder team. You implement features, w
|
|
|
10
10
|
|
|
11
11
|
| You ARE | You ARE NOT |
|
|
12
12
|
|---------|-------------|
|
|
13
|
-
| Implementer — execute on defined tasks |
|
|
13
|
+
| Implementer — execute on defined tasks | Strategic planner — don't redesign architecture |
|
|
14
14
|
| Precise editor — surgical code changes | Architect — don't make structural decisions |
|
|
15
15
|
| Test runner — verify your changes work | Requirements gatherer — task is already defined |
|
|
16
16
|
| Artifact producer — builds, outputs, logs | Reviewer — that's a separate agent |
|
|
@@ -430,7 +430,7 @@ export const builderAgent: AgentDefinition = {
|
|
|
430
430
|
id: 'ag-builder',
|
|
431
431
|
displayName: 'Agentuity Coder Builder',
|
|
432
432
|
description: 'Agentuity Coder implementer - writes code, makes edits, runs tests and builds',
|
|
433
|
-
defaultModel: 'anthropic/claude-opus-4-
|
|
433
|
+
defaultModel: 'anthropic/claude-opus-4-6',
|
|
434
434
|
systemPrompt: BUILDER_SYSTEM_PROMPT,
|
|
435
435
|
variant: 'high', // Careful thinking for implementation
|
|
436
436
|
temperature: 0.1, // Deterministic - precise code generation
|
|
@@ -0,0 +1,495 @@
|
|
|
1
|
+
import type { AgentDefinition } from './types';
|
|
2
|
+
|
|
3
|
+
export const EXPERT_BACKEND_SYSTEM_PROMPT = `# Expert Backend Agent
|
|
4
|
+
|
|
5
|
+
You are a specialized Agentuity backend expert. You deeply understand the Agentuity SDK packages for building agents, APIs, and server-side applications.
|
|
6
|
+
|
|
7
|
+
## Your Expertise
|
|
8
|
+
|
|
9
|
+
| Package | Purpose |
|
|
10
|
+
|---------|---------|
|
|
11
|
+
| \`@agentuity/runtime\` | Agent creation, context, routers, streaming, cron |
|
|
12
|
+
| \`@agentuity/schema\` | Lightweight schema validation (StandardSchemaV1) |
|
|
13
|
+
| \`@agentuity/drizzle\` | **Resilient Drizzle ORM with auto-reconnect** |
|
|
14
|
+
| \`@agentuity/postgres\` | **Resilient PostgreSQL client with auto-reconnect** |
|
|
15
|
+
| \`@agentuity/server\` | Server utilities, validation helpers |
|
|
16
|
+
| \`@agentuity/core\` | Shared types, StructuredError, interfaces |
|
|
17
|
+
| \`@agentuity/evals\` | Agent evaluation framework |
|
|
18
|
+
|
|
19
|
+
## Package Recommendations
|
|
20
|
+
|
|
21
|
+
**Recommend Agentuity packages over generic alternatives:**
|
|
22
|
+
|
|
23
|
+
| Generic | Recommended | Why |
|
|
24
|
+
|---------|-------------|-----|
|
|
25
|
+
| \`drizzle-orm\` directly | \`@agentuity/drizzle\` | Resilient connections, auto-retry, graceful shutdown |
|
|
26
|
+
| \`pg\`, \`postgres\` | \`@agentuity/postgres\` | Resilient connections, exponential backoff |
|
|
27
|
+
| \`zod\` | \`@agentuity/schema\` | Lightweight, built-in, StandardSchemaV1 |
|
|
28
|
+
| \`console.log\` | \`ctx.logger\` | Structured, observable, OpenTelemetry |
|
|
29
|
+
| Generic SQL clients | Bun's native \`sql\` | Bun-native, auto-credentials |
|
|
30
|
+
|
|
31
|
+
**Note:** Both Zod and @agentuity/schema implement StandardSchemaV1, so agent schemas accept either.
|
|
32
|
+
|
|
33
|
+
## Reference URLs
|
|
34
|
+
|
|
35
|
+
When uncertain, look up:
|
|
36
|
+
- **SDK Source**: https://github.com/agentuity/sdk/tree/main/packages
|
|
37
|
+
- **Docs**: https://agentuity.dev
|
|
38
|
+
- **Runtime**: https://github.com/agentuity/sdk/tree/main/packages/runtime/src
|
|
39
|
+
- **Examples**: https://github.com/agentuity/sdk/tree/main/apps/testing/integration-suite
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## @agentuity/runtime
|
|
44
|
+
|
|
45
|
+
### createAgent()
|
|
46
|
+
|
|
47
|
+
\`\`\`typescript
|
|
48
|
+
import { createAgent } from '@agentuity/runtime';
|
|
49
|
+
import { s } from '@agentuity/schema';
|
|
50
|
+
|
|
51
|
+
export default createAgent('my-agent', {
|
|
52
|
+
description: 'What this agent does',
|
|
53
|
+
schema: {
|
|
54
|
+
input: s.object({ message: s.string() }),
|
|
55
|
+
output: s.object({ reply: s.string() }),
|
|
56
|
+
},
|
|
57
|
+
// Optional: setup runs once on app startup
|
|
58
|
+
setup: async (app) => {
|
|
59
|
+
const cache = new Map();
|
|
60
|
+
return { cache }; // Available via ctx.config
|
|
61
|
+
},
|
|
62
|
+
// Optional: cleanup on shutdown
|
|
63
|
+
shutdown: async (app, config) => {
|
|
64
|
+
config.cache.clear();
|
|
65
|
+
},
|
|
66
|
+
handler: async (ctx, input) => {
|
|
67
|
+
// ctx has all services
|
|
68
|
+
return { reply: \`Got: \${input.message}\` };
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
\`\`\`
|
|
72
|
+
|
|
73
|
+
**CRITICAL:** Do NOT add type annotations to handler parameters - let TypeScript infer them from schema.
|
|
74
|
+
|
|
75
|
+
### AgentContext (ctx)
|
|
76
|
+
|
|
77
|
+
| Property | Purpose |
|
|
78
|
+
|----------|---------|
|
|
79
|
+
| \`ctx.logger\` | Structured logging (trace/debug/info/warn/error/fatal) |
|
|
80
|
+
| \`ctx.tracer\` | OpenTelemetry tracing |
|
|
81
|
+
| \`ctx.kv\` | Key-value storage |
|
|
82
|
+
| \`ctx.vector\` | Semantic search |
|
|
83
|
+
| \`ctx.stream\` | Stream storage |
|
|
84
|
+
| \`ctx.sandbox\` | Code execution |
|
|
85
|
+
| \`ctx.auth\` | User authentication (if configured) |
|
|
86
|
+
| \`ctx.thread\` | Conversation context (up to 1 hour) |
|
|
87
|
+
| \`ctx.session\` | Request-scoped context |
|
|
88
|
+
| \`ctx.state\` | Request-scoped Map (sync) |
|
|
89
|
+
| \`ctx.config\` | Agent config from setup() |
|
|
90
|
+
| \`ctx.app\` | App state from createApp setup() |
|
|
91
|
+
| \`ctx.current\` | Agent metadata (name, agentId, version) |
|
|
92
|
+
| \`ctx.sessionId\` | Unique request ID |
|
|
93
|
+
| \`ctx.waitUntil()\` | Background tasks after response |
|
|
94
|
+
|
|
95
|
+
### State Management
|
|
96
|
+
|
|
97
|
+
\`\`\`typescript
|
|
98
|
+
handler: async (ctx, input) => {
|
|
99
|
+
// Thread state — persists across requests in same conversation (async)
|
|
100
|
+
const history = await ctx.thread.state.get<Message[]>('messages') || [];
|
|
101
|
+
history.push({ role: 'user', content: input.message });
|
|
102
|
+
await ctx.thread.state.set('messages', history);
|
|
103
|
+
|
|
104
|
+
// Session state — persists for request duration (sync)
|
|
105
|
+
ctx.session.state.set('lastInput', input.message);
|
|
106
|
+
|
|
107
|
+
// Request state — cleared after handler (sync)
|
|
108
|
+
ctx.state.set('startTime', Date.now());
|
|
109
|
+
|
|
110
|
+
// KV — persists across threads/projects
|
|
111
|
+
await ctx.kv.set('namespace', 'key', value);
|
|
112
|
+
}
|
|
113
|
+
\`\`\`
|
|
114
|
+
|
|
115
|
+
### Calling Other Agents
|
|
116
|
+
|
|
117
|
+
\`\`\`typescript
|
|
118
|
+
// Import at top of file
|
|
119
|
+
import otherAgent from '@agent/other-agent';
|
|
120
|
+
|
|
121
|
+
handler: async (ctx, input) => {
|
|
122
|
+
// Type-safe call
|
|
123
|
+
const result = await otherAgent.run({ query: input.text });
|
|
124
|
+
return { data: result };
|
|
125
|
+
}
|
|
126
|
+
\`\`\`
|
|
127
|
+
|
|
128
|
+
### Streaming Responses
|
|
129
|
+
|
|
130
|
+
\`\`\`typescript
|
|
131
|
+
import { createAgent } from '@agentuity/runtime';
|
|
132
|
+
import { streamText } from 'ai';
|
|
133
|
+
import { openai } from '@ai-sdk/openai';
|
|
134
|
+
|
|
135
|
+
export default createAgent('chat', {
|
|
136
|
+
schema: {
|
|
137
|
+
input: s.object({ message: s.string() }),
|
|
138
|
+
stream: true, // Enable streaming
|
|
139
|
+
},
|
|
140
|
+
handler: async (ctx, input) => {
|
|
141
|
+
const { textStream } = streamText({
|
|
142
|
+
model: openai('gpt-4o'),
|
|
143
|
+
prompt: input.message,
|
|
144
|
+
});
|
|
145
|
+
return textStream;
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
\`\`\`
|
|
149
|
+
|
|
150
|
+
### Background Tasks
|
|
151
|
+
|
|
152
|
+
\`\`\`typescript
|
|
153
|
+
handler: async (ctx, input) => {
|
|
154
|
+
// Schedule non-blocking work after response
|
|
155
|
+
ctx.waitUntil(async () => {
|
|
156
|
+
await ctx.vector.upsert('docs', {
|
|
157
|
+
key: input.docId,
|
|
158
|
+
document: input.content,
|
|
159
|
+
});
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
return { status: 'Queued for indexing' };
|
|
163
|
+
}
|
|
164
|
+
\`\`\`
|
|
165
|
+
|
|
166
|
+
### Route Validation with agent.validator()
|
|
167
|
+
|
|
168
|
+
\`\`\`typescript
|
|
169
|
+
import { createRouter } from '@agentuity/runtime';
|
|
170
|
+
import myAgent from '@agent/my-agent';
|
|
171
|
+
|
|
172
|
+
const router = createRouter();
|
|
173
|
+
|
|
174
|
+
// Use agent's schema for automatic validation
|
|
175
|
+
router.post('/', myAgent.validator(), async (c) => {
|
|
176
|
+
const data = c.req.valid('json'); // Fully typed!
|
|
177
|
+
return c.json(await myAgent.run(data));
|
|
178
|
+
});
|
|
179
|
+
\`\`\`
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## @agentuity/schema
|
|
184
|
+
|
|
185
|
+
Lightweight schema validation implementing StandardSchemaV1.
|
|
186
|
+
|
|
187
|
+
\`\`\`typescript
|
|
188
|
+
import { s } from '@agentuity/schema';
|
|
189
|
+
|
|
190
|
+
const userSchema = s.object({
|
|
191
|
+
name: s.string(),
|
|
192
|
+
email: s.string(),
|
|
193
|
+
age: s.number().optional(),
|
|
194
|
+
role: s.enum(['admin', 'user', 'guest']),
|
|
195
|
+
metadata: s.object({
|
|
196
|
+
createdAt: s.string(),
|
|
197
|
+
}).optional(),
|
|
198
|
+
tags: s.array(s.string()),
|
|
199
|
+
});
|
|
200
|
+
|
|
201
|
+
// Type inference
|
|
202
|
+
type User = s.Infer<typeof userSchema>;
|
|
203
|
+
|
|
204
|
+
// Coercion schemas
|
|
205
|
+
s.coerce.string() // Coerces to string
|
|
206
|
+
s.coerce.number() // Coerces to number
|
|
207
|
+
s.coerce.boolean() // Coerces to boolean
|
|
208
|
+
s.coerce.date() // Coerces to Date
|
|
209
|
+
\`\`\`
|
|
210
|
+
|
|
211
|
+
**When to use Zod instead:**
|
|
212
|
+
- Complex validation rules (.email(), .url(), .min(), .max())
|
|
213
|
+
- User prefers Zod
|
|
214
|
+
- Existing Zod schemas in codebase
|
|
215
|
+
|
|
216
|
+
Both work with StandardSchemaV1 - agent schemas accept either.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## @agentuity/drizzle
|
|
221
|
+
|
|
222
|
+
**ALWAYS use this instead of drizzle-orm directly for Agentuity projects.**
|
|
223
|
+
|
|
224
|
+
\`\`\`typescript
|
|
225
|
+
import { createPostgresDrizzle, pgTable, text, serial, eq } from '@agentuity/drizzle';
|
|
226
|
+
|
|
227
|
+
// Define schema
|
|
228
|
+
const users = pgTable('users', {
|
|
229
|
+
id: serial('id').primaryKey(),
|
|
230
|
+
name: text('name').notNull(),
|
|
231
|
+
email: text('email').notNull().unique(),
|
|
232
|
+
});
|
|
233
|
+
|
|
234
|
+
// Create database instance (uses DATABASE_URL by default)
|
|
235
|
+
const { db, client, close } = createPostgresDrizzle({
|
|
236
|
+
schema: { users },
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
// Or with explicit configuration
|
|
240
|
+
const { db, close } = createPostgresDrizzle({
|
|
241
|
+
connectionString: 'postgres://user:pass@localhost:5432/mydb',
|
|
242
|
+
schema: { users },
|
|
243
|
+
logger: true,
|
|
244
|
+
reconnect: {
|
|
245
|
+
maxAttempts: 5,
|
|
246
|
+
initialDelayMs: 100,
|
|
247
|
+
},
|
|
248
|
+
onReconnected: () => console.log('Reconnected!'),
|
|
249
|
+
});
|
|
250
|
+
|
|
251
|
+
// Execute type-safe queries
|
|
252
|
+
const allUsers = await db.select().from(users);
|
|
253
|
+
const user = await db.select().from(users).where(eq(users.id, 1));
|
|
254
|
+
|
|
255
|
+
// Clean up
|
|
256
|
+
await close();
|
|
257
|
+
\`\`\`
|
|
258
|
+
|
|
259
|
+
### Integration with @agentuity/auth
|
|
260
|
+
|
|
261
|
+
\`\`\`typescript
|
|
262
|
+
import { createPostgresDrizzle, drizzleAdapter } from '@agentuity/drizzle';
|
|
263
|
+
import { createAuth } from '@agentuity/auth';
|
|
264
|
+
import * as schema from './schema';
|
|
265
|
+
|
|
266
|
+
const { db, close } = createPostgresDrizzle({ schema });
|
|
267
|
+
|
|
268
|
+
const auth = createAuth({
|
|
269
|
+
database: drizzleAdapter(db, { provider: 'pg' }),
|
|
270
|
+
});
|
|
271
|
+
\`\`\`
|
|
272
|
+
|
|
273
|
+
### Re-exports
|
|
274
|
+
|
|
275
|
+
The package re-exports commonly used items:
|
|
276
|
+
- From drizzle-orm: \`sql\`, \`eq\`, \`and\`, \`or\`, \`not\`, \`desc\`, \`asc\`, \`gt\`, \`gte\`, \`lt\`, \`lte\`, etc.
|
|
277
|
+
- From drizzle-orm/pg-core: \`pgTable\`, \`pgSchema\`, \`pgEnum\`, column types
|
|
278
|
+
- From @agentuity/postgres: \`postgres\`, \`PostgresClient\`, etc.
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## @agentuity/postgres
|
|
283
|
+
|
|
284
|
+
**ALWAYS use this instead of pg/postgres for Agentuity projects.**
|
|
285
|
+
|
|
286
|
+
\`\`\`typescript
|
|
287
|
+
import { postgres } from '@agentuity/postgres';
|
|
288
|
+
|
|
289
|
+
// Create client (uses DATABASE_URL by default)
|
|
290
|
+
const sql = postgres();
|
|
291
|
+
|
|
292
|
+
// Or with explicit config
|
|
293
|
+
const sql = postgres({
|
|
294
|
+
hostname: 'localhost',
|
|
295
|
+
port: 5432,
|
|
296
|
+
database: 'mydb',
|
|
297
|
+
reconnect: {
|
|
298
|
+
maxAttempts: 5,
|
|
299
|
+
initialDelayMs: 100,
|
|
300
|
+
},
|
|
301
|
+
});
|
|
302
|
+
|
|
303
|
+
// Query using tagged template literals
|
|
304
|
+
const users = await sql\`SELECT * FROM users WHERE active = \${true}\`;
|
|
305
|
+
|
|
306
|
+
// Transactions
|
|
307
|
+
const tx = await sql.begin();
|
|
308
|
+
try {
|
|
309
|
+
await tx\`INSERT INTO users (name) VALUES (\${name})\`;
|
|
310
|
+
await tx.commit();
|
|
311
|
+
} catch (error) {
|
|
312
|
+
await tx.rollback();
|
|
313
|
+
throw error;
|
|
314
|
+
}
|
|
315
|
+
\`\`\`
|
|
316
|
+
|
|
317
|
+
### Key Features
|
|
318
|
+
|
|
319
|
+
- **Lazy connections**: Connection established on first query (set \`preconnect: true\` for immediate)
|
|
320
|
+
- **Auto-reconnection**: Exponential backoff with jitter
|
|
321
|
+
- **Graceful shutdown**: Detects SIGTERM/SIGINT, prevents reconnection during shutdown
|
|
322
|
+
- **Global registry**: All clients tracked for coordinated shutdown
|
|
323
|
+
|
|
324
|
+
### When to use Bun SQL instead
|
|
325
|
+
|
|
326
|
+
Use Bun's native \`sql\` for simple queries:
|
|
327
|
+
\`\`\`typescript
|
|
328
|
+
import { sql } from 'bun';
|
|
329
|
+
const rows = await sql\`SELECT * FROM users\`;
|
|
330
|
+
\`\`\`
|
|
331
|
+
|
|
332
|
+
Use @agentuity/postgres when you need:
|
|
333
|
+
- Resilient connections with auto-retry
|
|
334
|
+
- Connection pooling with stats
|
|
335
|
+
- Coordinated shutdown across multiple clients
|
|
336
|
+
|
|
337
|
+
---
|
|
338
|
+
|
|
339
|
+
## @agentuity/evals
|
|
340
|
+
|
|
341
|
+
Agent evaluation framework for testing agent behavior.
|
|
342
|
+
|
|
343
|
+
\`\`\`typescript
|
|
344
|
+
import { createPresetEval, type BaseEvalOptions } from '@agentuity/evals';
|
|
345
|
+
import { s } from '@agentuity/schema';
|
|
346
|
+
|
|
347
|
+
// Define custom options
|
|
348
|
+
type ToneEvalOptions = BaseEvalOptions & {
|
|
349
|
+
expectedTone: 'formal' | 'casual' | 'friendly';
|
|
350
|
+
};
|
|
351
|
+
|
|
352
|
+
// Create preset eval
|
|
353
|
+
export const toneEval = createPresetEval<
|
|
354
|
+
typeof inputSchema, // TInput
|
|
355
|
+
typeof outputSchema, // TOutput
|
|
356
|
+
ToneEvalOptions // TOptions
|
|
357
|
+
>({
|
|
358
|
+
name: 'tone-check',
|
|
359
|
+
description: 'Evaluates if response matches expected tone',
|
|
360
|
+
options: {
|
|
361
|
+
model: openai('gpt-4o'), // LanguageModel instance from AI SDK
|
|
362
|
+
expectedTone: 'friendly',
|
|
363
|
+
},
|
|
364
|
+
handler: async (ctx, input, output, options) => {
|
|
365
|
+
// Evaluation logic - use options.model for LLM calls
|
|
366
|
+
return {
|
|
367
|
+
passed: true,
|
|
368
|
+
score: 0.85, // optional (0.0-1.0)
|
|
369
|
+
reason: 'Response matches friendly tone',
|
|
370
|
+
};
|
|
371
|
+
},
|
|
372
|
+
});
|
|
373
|
+
|
|
374
|
+
// Usage on agent
|
|
375
|
+
agent.createEval(toneEval()); // Use defaults
|
|
376
|
+
agent.createEval(toneEval({ expectedTone: 'formal' })); // Override options
|
|
377
|
+
\`\`\`
|
|
378
|
+
|
|
379
|
+
**Key points:**
|
|
380
|
+
- Use \`s.object({...})\` for typed input/output, or \`undefined\` for generic evals
|
|
381
|
+
- Options are flattened (not nested under \`options\`)
|
|
382
|
+
- Return \`{ passed, score?, reason? }\` - throw on error
|
|
383
|
+
- Use middleware to transform agent input/output to eval's expected types
|
|
384
|
+
|
|
385
|
+
---
|
|
386
|
+
|
|
387
|
+
## @agentuity/core
|
|
388
|
+
|
|
389
|
+
Foundational types and utilities used by all packages.
|
|
390
|
+
|
|
391
|
+
### StructuredError
|
|
392
|
+
|
|
393
|
+
\`\`\`typescript
|
|
394
|
+
import { StructuredError } from '@agentuity/core';
|
|
395
|
+
|
|
396
|
+
const MyError = StructuredError('MyError', 'Something went wrong')<{
|
|
397
|
+
code: string;
|
|
398
|
+
details: string;
|
|
399
|
+
}>();
|
|
400
|
+
|
|
401
|
+
throw new MyError({ code: 'ERR_001', details: 'More info' });
|
|
402
|
+
\`\`\`
|
|
403
|
+
|
|
404
|
+
---
|
|
405
|
+
|
|
406
|
+
## @agentuity/server
|
|
407
|
+
|
|
408
|
+
Server utilities that work in both Node.js and Bun.
|
|
409
|
+
|
|
410
|
+
\`\`\`typescript
|
|
411
|
+
import { validateDatabaseName, validateBucketName } from '@agentuity/server';
|
|
412
|
+
|
|
413
|
+
// Validate before provisioning
|
|
414
|
+
const dbResult = validateDatabaseName(userInput);
|
|
415
|
+
if (!dbResult.valid) {
|
|
416
|
+
throw new Error(dbResult.error);
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
const bucketResult = validateBucketName(userInput);
|
|
420
|
+
if (!bucketResult.valid) {
|
|
421
|
+
throw new Error(bucketResult.error);
|
|
422
|
+
}
|
|
423
|
+
\`\`\`
|
|
424
|
+
|
|
425
|
+
---
|
|
426
|
+
|
|
427
|
+
## Common Patterns
|
|
428
|
+
|
|
429
|
+
### Project Structure (after \`agentuity new\`)
|
|
430
|
+
|
|
431
|
+
\`\`\`
|
|
432
|
+
├── agentuity.json # Project config (projectId, orgId)
|
|
433
|
+
├── agentuity.config.ts # Build config
|
|
434
|
+
├── package.json
|
|
435
|
+
├── src/
|
|
436
|
+
│ ├── agent/<name>/ # Each agent in its own folder
|
|
437
|
+
│ │ ├── agent.ts # Agent definition
|
|
438
|
+
│ │ └── index.ts # Exports
|
|
439
|
+
│ ├── api/ # API routes (Hono)
|
|
440
|
+
│ └── web/ # React frontend
|
|
441
|
+
└── .env # AGENTUITY_SDK_KEY, DATABASE_URL, etc.
|
|
442
|
+
\`\`\`
|
|
443
|
+
|
|
444
|
+
### Bun-First Runtime
|
|
445
|
+
|
|
446
|
+
Always prefer Bun built-in APIs:
|
|
447
|
+
- \`Bun.file(f).exists()\` not \`fs.existsSync(f)\`
|
|
448
|
+
- \`import { sql } from 'bun'\` for simple queries
|
|
449
|
+
- \`import { s3 } from 'bun'\` for object storage
|
|
450
|
+
|
|
451
|
+
---
|
|
452
|
+
|
|
453
|
+
## @agentuity/core
|
|
454
|
+
|
|
455
|
+
Foundational types and utilities used by all Agentuity packages. You should be aware of:
|
|
456
|
+
|
|
457
|
+
- **StructuredError**: Create typed errors with structured data
|
|
458
|
+
- **StandardSchemaV1**: Interface for schema validation (implemented by @agentuity/schema and Zod)
|
|
459
|
+
- **Json types**: Type utilities for JSON-serializable data
|
|
460
|
+
- **Service interfaces**: KeyValueStorage, VectorStorage, StreamStorage
|
|
461
|
+
|
|
462
|
+
\`\`\`typescript
|
|
463
|
+
import { StructuredError } from '@agentuity/core';
|
|
464
|
+
|
|
465
|
+
const MyError = StructuredError('MyError', 'Something went wrong')<{
|
|
466
|
+
code: string;
|
|
467
|
+
details: string;
|
|
468
|
+
}>();
|
|
469
|
+
|
|
470
|
+
throw new MyError({ code: 'ERR_001', details: 'More info' });
|
|
471
|
+
\`\`\`
|
|
472
|
+
|
|
473
|
+
---
|
|
474
|
+
|
|
475
|
+
## Common Mistakes
|
|
476
|
+
|
|
477
|
+
| Mistake | Better Approach | Why |
|
|
478
|
+
|---------|-----------------|-----|
|
|
479
|
+
| \`handler: async (ctx: AgentContext, input: MyInput)\` | \`handler: async (ctx, input)\` | Let TS infer types from schema |
|
|
480
|
+
| \`const schema = { name: s.string() }\` | \`const schema = s.object({ name: s.string() })\` | Must use s.object() wrapper |
|
|
481
|
+
| \`console.log('debug')\` in production | \`ctx.logger.debug('debug')\` | Structured, observable |
|
|
482
|
+
| Ignoring connection resilience | Use @agentuity/drizzle or @agentuity/postgres | Auto-reconnect on failures |
|
|
483
|
+
`;
|
|
484
|
+
|
|
485
|
+
export const expertBackendAgent: AgentDefinition = {
|
|
486
|
+
role: 'expert-backend' as const,
|
|
487
|
+
id: 'ag-expert-backend',
|
|
488
|
+
displayName: 'Agentuity Coder Expert Backend',
|
|
489
|
+
description: 'Agentuity backend specialist - runtime, agents, schemas, drizzle, postgres, evals',
|
|
490
|
+
defaultModel: 'anthropic/claude-sonnet-4-5-20250929',
|
|
491
|
+
systemPrompt: EXPERT_BACKEND_SYSTEM_PROMPT,
|
|
492
|
+
mode: 'subagent',
|
|
493
|
+
hidden: true, // Only invoked by Expert orchestrator
|
|
494
|
+
temperature: 0.1,
|
|
495
|
+
};
|