@supaku/agentfactory-nextjs 0.3.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/LICENSE +21 -0
- package/dist/src/factory.d.ts +105 -0
- package/dist/src/factory.d.ts.map +1 -0
- package/dist/src/factory.js +89 -0
- package/dist/src/handlers/cleanup.d.ts +44 -0
- package/dist/src/handlers/cleanup.d.ts.map +1 -0
- package/dist/src/handlers/cleanup.js +34 -0
- package/dist/src/handlers/public/session-detail.d.ts +31 -0
- package/dist/src/handlers/public/session-detail.d.ts.map +1 -0
- package/dist/src/handlers/public/session-detail.js +91 -0
- package/dist/src/handlers/public/sessions-list.d.ts +20 -0
- package/dist/src/handlers/public/sessions-list.d.ts.map +1 -0
- package/dist/src/handlers/public/sessions-list.js +73 -0
- package/dist/src/handlers/public/stats.d.ts +22 -0
- package/dist/src/handlers/public/stats.d.ts.map +1 -0
- package/dist/src/handlers/public/stats.js +53 -0
- package/dist/src/handlers/sessions/activity.d.ts +15 -0
- package/dist/src/handlers/sessions/activity.d.ts.map +1 -0
- package/dist/src/handlers/sessions/activity.js +77 -0
- package/dist/src/handlers/sessions/claim.d.ts +15 -0
- package/dist/src/handlers/sessions/claim.d.ts.map +1 -0
- package/dist/src/handlers/sessions/claim.js +87 -0
- package/dist/src/handlers/sessions/completion.d.ts +16 -0
- package/dist/src/handlers/sessions/completion.d.ts.map +1 -0
- package/dist/src/handlers/sessions/completion.js +82 -0
- package/dist/src/handlers/sessions/external-urls.d.ts +15 -0
- package/dist/src/handlers/sessions/external-urls.d.ts.map +1 -0
- package/dist/src/handlers/sessions/external-urls.js +59 -0
- package/dist/src/handlers/sessions/get.d.ts +19 -0
- package/dist/src/handlers/sessions/get.d.ts.map +1 -0
- package/dist/src/handlers/sessions/get.js +46 -0
- package/dist/src/handlers/sessions/list.d.ts +26 -0
- package/dist/src/handlers/sessions/list.d.ts.map +1 -0
- package/dist/src/handlers/sessions/list.js +50 -0
- package/dist/src/handlers/sessions/lock-refresh.d.ts +14 -0
- package/dist/src/handlers/sessions/lock-refresh.d.ts.map +1 -0
- package/dist/src/handlers/sessions/lock-refresh.js +38 -0
- package/dist/src/handlers/sessions/progress.d.ts +15 -0
- package/dist/src/handlers/sessions/progress.d.ts.map +1 -0
- package/dist/src/handlers/sessions/progress.js +82 -0
- package/dist/src/handlers/sessions/prompts.d.ts +15 -0
- package/dist/src/handlers/sessions/prompts.d.ts.map +1 -0
- package/dist/src/handlers/sessions/prompts.js +91 -0
- package/dist/src/handlers/sessions/status.d.ts +18 -0
- package/dist/src/handlers/sessions/status.d.ts.map +1 -0
- package/dist/src/handlers/sessions/status.js +131 -0
- package/dist/src/handlers/sessions/tool-error.d.ts +15 -0
- package/dist/src/handlers/sessions/tool-error.d.ts.map +1 -0
- package/dist/src/handlers/sessions/tool-error.js +91 -0
- package/dist/src/handlers/sessions/transfer-ownership.d.ts +14 -0
- package/dist/src/handlers/sessions/transfer-ownership.d.ts.map +1 -0
- package/dist/src/handlers/sessions/transfer-ownership.js +56 -0
- package/dist/src/handlers/workers/get-delete.d.ts +15 -0
- package/dist/src/handlers/workers/get-delete.d.ts.map +1 -0
- package/dist/src/handlers/workers/get-delete.js +58 -0
- package/dist/src/handlers/workers/heartbeat.d.ts +14 -0
- package/dist/src/handlers/workers/heartbeat.d.ts.map +1 -0
- package/dist/src/handlers/workers/heartbeat.js +42 -0
- package/dist/src/handlers/workers/list.d.ts +22 -0
- package/dist/src/handlers/workers/list.d.ts.map +1 -0
- package/dist/src/handlers/workers/list.js +33 -0
- package/dist/src/handlers/workers/poll.d.ts +14 -0
- package/dist/src/handlers/workers/poll.d.ts.map +1 -0
- package/dist/src/handlers/workers/poll.js +78 -0
- package/dist/src/handlers/workers/register.d.ts +9 -0
- package/dist/src/handlers/workers/register.d.ts.map +1 -0
- package/dist/src/handlers/workers/register.js +41 -0
- package/dist/src/index.d.ts +39 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +41 -0
- package/dist/src/middleware/cron-auth.d.ts +21 -0
- package/dist/src/middleware/cron-auth.d.ts.map +1 -0
- package/dist/src/middleware/cron-auth.js +46 -0
- package/dist/src/middleware/worker-auth.d.ts +25 -0
- package/dist/src/middleware/worker-auth.d.ts.map +1 -0
- package/dist/src/middleware/worker-auth.js +43 -0
- package/dist/src/types.d.ts +62 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +7 -0
- package/dist/src/webhook/handlers/issue-updated.d.ts +14 -0
- package/dist/src/webhook/handlers/issue-updated.d.ts.map +1 -0
- package/dist/src/webhook/handlers/issue-updated.js +462 -0
- package/dist/src/webhook/handlers/session-created.d.ts +9 -0
- package/dist/src/webhook/handlers/session-created.d.ts.map +1 -0
- package/dist/src/webhook/handlers/session-created.js +229 -0
- package/dist/src/webhook/handlers/session-prompted.d.ts +9 -0
- package/dist/src/webhook/handlers/session-prompted.d.ts.map +1 -0
- package/dist/src/webhook/handlers/session-prompted.js +197 -0
- package/dist/src/webhook/handlers/session-updated.d.ts +9 -0
- package/dist/src/webhook/handlers/session-updated.d.ts.map +1 -0
- package/dist/src/webhook/handlers/session-updated.js +29 -0
- package/dist/src/webhook/processor.d.ts +22 -0
- package/dist/src/webhook/processor.d.ts.map +1 -0
- package/dist/src/webhook/processor.js +98 -0
- package/dist/src/webhook/signature.d.ts +16 -0
- package/dist/src/webhook/signature.d.ts.map +1 -0
- package/dist/src/webhook/signature.js +23 -0
- package/dist/src/webhook/utils.d.ts +61 -0
- package/dist/src/webhook/utils.d.ts.map +1 -0
- package/dist/src/webhook/utils.js +159 -0
- package/package.json +66 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Webhook Utility Functions
|
|
3
|
+
*
|
|
4
|
+
* Shared helpers used by webhook sub-handlers.
|
|
5
|
+
*/
|
|
6
|
+
import type { LinearAgentClient, AgentWorkType } from '@supaku/agentfactory-linear';
|
|
7
|
+
import type { WebhookConfig } from '../types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Activity types for Linear Agent API
|
|
10
|
+
*/
|
|
11
|
+
type ActivityType = 'thought' | 'response' | 'error';
|
|
12
|
+
/**
|
|
13
|
+
* Emit an activity to the agent session.
|
|
14
|
+
* Uses Linear's native Agent API.
|
|
15
|
+
*/
|
|
16
|
+
export declare function emitActivity(client: LinearAgentClient, sessionId: string, type: ActivityType, body: string, ephemeral?: boolean): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Consolidated stop signal handler.
|
|
19
|
+
*
|
|
20
|
+
* Handles stops for sessions in any non-terminal state:
|
|
21
|
+
* - running/claimed: Worker will detect the status change and stop the agent
|
|
22
|
+
* - pending: Removes from global work queue and/or issue-pending queue
|
|
23
|
+
* - Any other non-terminal state: Updates status and cleans up
|
|
24
|
+
*/
|
|
25
|
+
export declare function handleStopSignal(config: WebhookConfig, sessionId: string, issueId: string, organizationId?: string): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Resolve a state ID to its name using the Linear API.
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolveStateName(config: WebhookConfig, organizationId: string | undefined, issueId: string, stateId: string): Promise<string | undefined>;
|
|
30
|
+
/**
|
|
31
|
+
* Check if a project is allowed for auto-trigger.
|
|
32
|
+
*/
|
|
33
|
+
export declare function isProjectAllowed(projectName: string | undefined, allowedProjects: string[]): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Check if an issue has any excluded labels.
|
|
36
|
+
*/
|
|
37
|
+
export declare function hasExcludedLabel(labels: Array<{
|
|
38
|
+
name: string;
|
|
39
|
+
}> | undefined, excludedLabels: string[]): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Determine work type from issue status.
|
|
42
|
+
*/
|
|
43
|
+
export declare function determineWorkType(status: string | undefined): AgentWorkType;
|
|
44
|
+
/**
|
|
45
|
+
* Default priority for work types (lower = higher priority).
|
|
46
|
+
*/
|
|
47
|
+
export declare function defaultGetPriority(workType: AgentWorkType): number;
|
|
48
|
+
/**
|
|
49
|
+
* Get the app URL for constructing dashboard links.
|
|
50
|
+
*/
|
|
51
|
+
export declare function getAppUrl(config: WebhookConfig): string;
|
|
52
|
+
/**
|
|
53
|
+
* Get the priority for a work type, using config override if available.
|
|
54
|
+
*/
|
|
55
|
+
export declare function getPriority(config: WebhookConfig, workType: AgentWorkType): number;
|
|
56
|
+
/**
|
|
57
|
+
* Work type messages for queuing acknowledgment.
|
|
58
|
+
*/
|
|
59
|
+
export declare const WORK_TYPE_MESSAGES: Record<AgentWorkType, string>;
|
|
60
|
+
export {};
|
|
61
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/webhook/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAanF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAIhD;;GAEG;AACH,KAAK,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAA;AAEpD;;;GAGG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,iBAAiB,EACzB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,YAAY,EAClB,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,OAAO,GAClB,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,IAAI,CAAC,CA4Cf;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,aAAa,EACrB,cAAc,EAAE,MAAM,GAAG,SAAS,EAClC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAgB7B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,OAAO,CAIpG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,OAAO,CAI/G;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,CAG3E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAalE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAEvD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,GAAG,MAAM,CAElF;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAW5D,CAAA"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Webhook Utility Functions
|
|
3
|
+
*
|
|
4
|
+
* Shared helpers used by webhook sub-handlers.
|
|
5
|
+
*/
|
|
6
|
+
import { STATUS_WORK_TYPE_MAP } from '@supaku/agentfactory-linear';
|
|
7
|
+
import { getSessionState, updateSessionStatus, removeFromQueue, removeParkedWorkBySessionId, releaseClaim, getIssueLock, releaseIssueLock, promoteNextPendingWork, createLogger, } from '@supaku/agentfactory-server';
|
|
8
|
+
const baseLogger = createLogger('webhook');
|
|
9
|
+
/**
|
|
10
|
+
* Emit an activity to the agent session.
|
|
11
|
+
* Uses Linear's native Agent API.
|
|
12
|
+
*/
|
|
13
|
+
export async function emitActivity(client, sessionId, type, body, ephemeral) {
|
|
14
|
+
const isEphemeral = ephemeral ?? type === 'thought';
|
|
15
|
+
await client.createAgentActivity({
|
|
16
|
+
agentSessionId: sessionId,
|
|
17
|
+
content: { type, body },
|
|
18
|
+
ephemeral: isEphemeral,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Consolidated stop signal handler.
|
|
23
|
+
*
|
|
24
|
+
* Handles stops for sessions in any non-terminal state:
|
|
25
|
+
* - running/claimed: Worker will detect the status change and stop the agent
|
|
26
|
+
* - pending: Removes from global work queue and/or issue-pending queue
|
|
27
|
+
* - Any other non-terminal state: Updates status and cleans up
|
|
28
|
+
*/
|
|
29
|
+
export async function handleStopSignal(config, sessionId, issueId, organizationId) {
|
|
30
|
+
const stopLog = baseLogger.child({ sessionId, issueId, handler: 'handleStopSignal' });
|
|
31
|
+
const session = await getSessionState(sessionId);
|
|
32
|
+
if (session && ['completed', 'failed', 'stopped'].includes(session.status)) {
|
|
33
|
+
stopLog.info('Session already in terminal state, skipping stop', {
|
|
34
|
+
status: session.status,
|
|
35
|
+
});
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (session) {
|
|
39
|
+
stopLog.info('Stopping session', {
|
|
40
|
+
previousStatus: session.status,
|
|
41
|
+
workerId: session.workerId,
|
|
42
|
+
});
|
|
43
|
+
await updateSessionStatus(sessionId, 'stopped');
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
stopLog.info('No session state found, cleaning up queues only');
|
|
47
|
+
}
|
|
48
|
+
await removeFromQueue(sessionId);
|
|
49
|
+
await removeParkedWorkBySessionId(issueId, sessionId);
|
|
50
|
+
await releaseClaim(sessionId);
|
|
51
|
+
const lock = await getIssueLock(issueId);
|
|
52
|
+
if (lock && lock.sessionId === sessionId) {
|
|
53
|
+
await releaseIssueLock(issueId);
|
|
54
|
+
await promoteNextPendingWork(issueId);
|
|
55
|
+
stopLog.info('Released issue lock and promoted next pending work');
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
const linearClient = await config.linearClient.getClient(organizationId);
|
|
59
|
+
const statusMsg = session?.status === 'pending'
|
|
60
|
+
? 'Stop signal received. Queued work has been cancelled.'
|
|
61
|
+
: 'Stop signal received. Agent will stop shortly.';
|
|
62
|
+
await emitActivity(linearClient, sessionId, 'response', statusMsg);
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
stopLog.error('Failed to emit stop activity', { error: err });
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Resolve a state ID to its name using the Linear API.
|
|
70
|
+
*/
|
|
71
|
+
export async function resolveStateName(config, organizationId, issueId, stateId) {
|
|
72
|
+
try {
|
|
73
|
+
const linearClient = await config.linearClient.getClient(organizationId);
|
|
74
|
+
const issue = await linearClient.getIssue(issueId);
|
|
75
|
+
const team = await issue.team;
|
|
76
|
+
if (team) {
|
|
77
|
+
const statuses = await linearClient.getTeamStatuses(team.id);
|
|
78
|
+
const entry = Object.entries(statuses).find(([, id]) => id === stateId);
|
|
79
|
+
return entry?.[0];
|
|
80
|
+
}
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
baseLogger.warn('Failed to resolve state name', { issueId, stateId, error: err });
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Check if a project is allowed for auto-trigger.
|
|
90
|
+
*/
|
|
91
|
+
export function isProjectAllowed(projectName, allowedProjects) {
|
|
92
|
+
if (allowedProjects.length === 0)
|
|
93
|
+
return true;
|
|
94
|
+
if (!projectName)
|
|
95
|
+
return false;
|
|
96
|
+
return allowedProjects.includes(projectName);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Check if an issue has any excluded labels.
|
|
100
|
+
*/
|
|
101
|
+
export function hasExcludedLabel(labels, excludedLabels) {
|
|
102
|
+
if (excludedLabels.length === 0)
|
|
103
|
+
return false;
|
|
104
|
+
if (!labels || labels.length === 0)
|
|
105
|
+
return false;
|
|
106
|
+
return labels.some(label => excludedLabels.includes(label.name));
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Determine work type from issue status.
|
|
110
|
+
*/
|
|
111
|
+
export function determineWorkType(status) {
|
|
112
|
+
if (!status)
|
|
113
|
+
return 'development';
|
|
114
|
+
return STATUS_WORK_TYPE_MAP[status] ?? 'development';
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Default priority for work types (lower = higher priority).
|
|
118
|
+
*/
|
|
119
|
+
export function defaultGetPriority(workType) {
|
|
120
|
+
switch (workType) {
|
|
121
|
+
case 'qa': return 2;
|
|
122
|
+
case 'acceptance': return 2;
|
|
123
|
+
case 'refinement': return 2;
|
|
124
|
+
case 'inflight': return 2;
|
|
125
|
+
case 'backlog-creation': return 3;
|
|
126
|
+
case 'development': return 3;
|
|
127
|
+
case 'research': return 4;
|
|
128
|
+
case 'coordination': return 2;
|
|
129
|
+
case 'qa-coordination': return 2;
|
|
130
|
+
case 'acceptance-coordination': return 2;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Get the app URL for constructing dashboard links.
|
|
135
|
+
*/
|
|
136
|
+
export function getAppUrl(config) {
|
|
137
|
+
return config.appUrl ?? process.env.NEXT_PUBLIC_APP_URL ?? 'https://agent.supaku.dev';
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Get the priority for a work type, using config override if available.
|
|
141
|
+
*/
|
|
142
|
+
export function getPriority(config, workType) {
|
|
143
|
+
return config.getPriority?.(workType) ?? defaultGetPriority(workType);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Work type messages for queuing acknowledgment.
|
|
147
|
+
*/
|
|
148
|
+
export const WORK_TYPE_MESSAGES = {
|
|
149
|
+
research: 'Research work queued. Agent will analyze and flesh out story requirements...',
|
|
150
|
+
'backlog-creation': 'Backlog creation queued. Agent will break down the story into separate issues...',
|
|
151
|
+
development: 'Development work queued. Waiting for an available worker...',
|
|
152
|
+
inflight: 'Resuming in-flight work. Agent will continue where it left off...',
|
|
153
|
+
qa: 'QA work queued. Waiting for an available worker to validate the implementation...',
|
|
154
|
+
acceptance: 'Acceptance testing queued. Agent will verify the deployed preview...',
|
|
155
|
+
refinement: 'Refinement work queued. Agent will address rejection feedback...',
|
|
156
|
+
coordination: 'Coordination work queued. Agent will orchestrate sub-issue execution...',
|
|
157
|
+
'qa-coordination': 'QA coordination queued. Agent will validate all sub-issues in parallel...',
|
|
158
|
+
'acceptance-coordination': 'Acceptance coordination queued. Agent will verify sub-issues and merge PR...',
|
|
159
|
+
};
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@supaku/agentfactory-nextjs",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"description": "Next.js API route handlers for AgentFactory — webhook processor, worker/session management, public stats",
|
|
6
|
+
"author": "Supaku (https://supaku.com)",
|
|
7
|
+
"license": "MIT",
|
|
8
|
+
"engines": {
|
|
9
|
+
"node": ">=22.0.0"
|
|
10
|
+
},
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "https://github.com/supaku/agentfactory",
|
|
14
|
+
"directory": "packages/nextjs"
|
|
15
|
+
},
|
|
16
|
+
"homepage": "https://github.com/supaku/agentfactory/tree/main/packages/nextjs",
|
|
17
|
+
"bugs": {
|
|
18
|
+
"url": "https://github.com/supaku/agentfactory/issues"
|
|
19
|
+
},
|
|
20
|
+
"publishConfig": {
|
|
21
|
+
"access": "public"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"nextjs",
|
|
25
|
+
"api-routes",
|
|
26
|
+
"webhook",
|
|
27
|
+
"agent-server",
|
|
28
|
+
"linear"
|
|
29
|
+
],
|
|
30
|
+
"main": "./dist/src/index.js",
|
|
31
|
+
"module": "./dist/src/index.js",
|
|
32
|
+
"types": "./dist/src/index.d.ts",
|
|
33
|
+
"exports": {
|
|
34
|
+
".": {
|
|
35
|
+
"types": "./dist/src/index.d.ts",
|
|
36
|
+
"import": "./dist/src/index.js",
|
|
37
|
+
"default": "./dist/src/index.js"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"files": [
|
|
41
|
+
"dist",
|
|
42
|
+
"README.md",
|
|
43
|
+
"LICENSE"
|
|
44
|
+
],
|
|
45
|
+
"dependencies": {
|
|
46
|
+
"@supaku/agentfactory": "0.2.0",
|
|
47
|
+
"@supaku/agentfactory-server": "0.2.0",
|
|
48
|
+
"@supaku/agentfactory-linear": "0.2.0"
|
|
49
|
+
},
|
|
50
|
+
"peerDependencies": {
|
|
51
|
+
"next": ">=14.0.0"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@types/node": "^22.5.4",
|
|
55
|
+
"next": "^15.3.3",
|
|
56
|
+
"typescript": "^5.7.3",
|
|
57
|
+
"vitest": "^3.2.3"
|
|
58
|
+
},
|
|
59
|
+
"scripts": {
|
|
60
|
+
"build": "tsc",
|
|
61
|
+
"typecheck": "tsc --noEmit",
|
|
62
|
+
"test": "vitest run",
|
|
63
|
+
"test:watch": "vitest",
|
|
64
|
+
"clean": "rm -rf dist"
|
|
65
|
+
}
|
|
66
|
+
}
|