intent-hub 0.1.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/.claude/settings.local.json +7 -0
- package/.turbo/cache/019f5ae385027cb1-meta.json +1 -0
- package/.turbo/cache/019f5ae385027cb1.tar.zst +0 -0
- package/.turbo/cache/040af6112a552a64-meta.json +1 -0
- package/.turbo/cache/040af6112a552a64.tar.zst +0 -0
- package/.turbo/cache/11195eac3ca5c6ce-meta.json +1 -0
- package/.turbo/cache/11195eac3ca5c6ce.tar.zst +0 -0
- package/.turbo/cache/13d11166efdf11cf-meta.json +1 -0
- package/.turbo/cache/13d11166efdf11cf.tar.zst +0 -0
- package/.turbo/cache/19af1af3b136706c-meta.json +1 -0
- package/.turbo/cache/19af1af3b136706c.tar.zst +0 -0
- package/.turbo/cache/1d33efac91c05b50-meta.json +1 -0
- package/.turbo/cache/1d33efac91c05b50.tar.zst +0 -0
- package/.turbo/cache/200b85a612af2d13-meta.json +1 -0
- package/.turbo/cache/200b85a612af2d13.tar.zst +0 -0
- package/.turbo/cache/210308c9ea929858-meta.json +1 -0
- package/.turbo/cache/210308c9ea929858.tar.zst +0 -0
- package/.turbo/cache/38df8e44c617835e-meta.json +1 -0
- package/.turbo/cache/38df8e44c617835e.tar.zst +0 -0
- package/.turbo/cache/3e449de5ef60a7a0-meta.json +1 -0
- package/.turbo/cache/3e449de5ef60a7a0.tar.zst +0 -0
- package/.turbo/cache/51ff024a97c2b4f5-meta.json +1 -0
- package/.turbo/cache/51ff024a97c2b4f5.tar.zst +0 -0
- package/.turbo/cache/54bc756eeebb377a-meta.json +1 -0
- package/.turbo/cache/54bc756eeebb377a.tar.zst +0 -0
- package/.turbo/cache/5ed6a840acafc873-meta.json +1 -0
- package/.turbo/cache/5ed6a840acafc873.tar.zst +0 -0
- package/.turbo/cache/6702dc24e5ca3c2e-meta.json +1 -0
- package/.turbo/cache/6702dc24e5ca3c2e.tar.zst +0 -0
- package/.turbo/cache/725c72cf71ea854f-meta.json +1 -0
- package/.turbo/cache/725c72cf71ea854f.tar.zst +0 -0
- package/.turbo/cache/7344ca28d348037a-meta.json +1 -0
- package/.turbo/cache/7344ca28d348037a.tar.zst +0 -0
- package/.turbo/cache/748fb444cdc0b78c-meta.json +1 -0
- package/.turbo/cache/748fb444cdc0b78c.tar.zst +0 -0
- package/.turbo/cache/789677c36fe7fb98-meta.json +1 -0
- package/.turbo/cache/789677c36fe7fb98.tar.zst +0 -0
- package/.turbo/cache/89ff6c6f38dd4a18-meta.json +1 -0
- package/.turbo/cache/89ff6c6f38dd4a18.tar.zst +0 -0
- package/.turbo/cache/8dbc92d00de0c92e-meta.json +1 -0
- package/.turbo/cache/8dbc92d00de0c92e.tar.zst +0 -0
- package/.turbo/cache/8eb03f40082b9441-meta.json +1 -0
- package/.turbo/cache/8eb03f40082b9441.tar.zst +0 -0
- package/.turbo/cache/9157134d4b916017-meta.json +1 -0
- package/.turbo/cache/9157134d4b916017.tar.zst +0 -0
- package/.turbo/cache/94219ffd32b48e93-meta.json +1 -0
- package/.turbo/cache/94219ffd32b48e93.tar.zst +0 -0
- package/.turbo/cache/95c1d160b4fa84eb-meta.json +1 -0
- package/.turbo/cache/95c1d160b4fa84eb.tar.zst +0 -0
- package/.turbo/cache/998833ea02dfb225-meta.json +1 -0
- package/.turbo/cache/998833ea02dfb225.tar.zst +0 -0
- package/.turbo/cache/a5974ef6ade3eb90-meta.json +1 -0
- package/.turbo/cache/a5974ef6ade3eb90.tar.zst +0 -0
- package/.turbo/cache/aab811809257decb-meta.json +1 -0
- package/.turbo/cache/aab811809257decb.tar.zst +0 -0
- package/.turbo/cache/ab2f82a54da854fd-meta.json +1 -0
- package/.turbo/cache/ab2f82a54da854fd.tar.zst +0 -0
- package/.turbo/cache/abbf4d95d62a7303-meta.json +1 -0
- package/.turbo/cache/abbf4d95d62a7303.tar.zst +0 -0
- package/.turbo/cache/af4441f519f9ce50-meta.json +1 -0
- package/.turbo/cache/af4441f519f9ce50.tar.zst +0 -0
- package/.turbo/cache/b9b85aaaf03d00a6-meta.json +1 -0
- package/.turbo/cache/b9b85aaaf03d00a6.tar.zst +0 -0
- package/.turbo/cache/cd58ee8721bbfed7-meta.json +1 -0
- package/.turbo/cache/cd58ee8721bbfed7.tar.zst +0 -0
- package/.turbo/cache/d285e48b8afa30b5-meta.json +1 -0
- package/.turbo/cache/d285e48b8afa30b5.tar.zst +0 -0
- package/.turbo/cache/d33e90229142acce-meta.json +1 -0
- package/.turbo/cache/d33e90229142acce.tar.zst +0 -0
- package/.turbo/cache/d57839a0d3b04540-meta.json +1 -0
- package/.turbo/cache/d57839a0d3b04540.tar.zst +0 -0
- package/.turbo/cache/d8554ef2c8b6e5eb-meta.json +1 -0
- package/.turbo/cache/d8554ef2c8b6e5eb.tar.zst +0 -0
- package/.turbo/cache/dc7375b51290e102-meta.json +1 -0
- package/.turbo/cache/dc7375b51290e102.tar.zst +0 -0
- package/.turbo/cache/e5310fe547fdbf0a-meta.json +1 -0
- package/.turbo/cache/e5310fe547fdbf0a.tar.zst +0 -0
- package/.turbo/cache/f12bb5f2f188758d-meta.json +1 -0
- package/.turbo/cache/f12bb5f2f188758d.tar.zst +0 -0
- package/.turbo/cache/f2db5af0c0b4d23f-meta.json +1 -0
- package/.turbo/cache/f2db5af0c0b4d23f.tar.zst +0 -0
- package/.turbo/cache/f8935ade01a88cd7-meta.json +1 -0
- package/.turbo/cache/f8935ade01a88cd7.tar.zst +0 -0
- package/.turbo/cache/f982b8dd966f823a-meta.json +1 -0
- package/.turbo/cache/f982b8dd966f823a.tar.zst +0 -0
- package/.turbo/cache/f9d4036dd350ba1a-meta.json +1 -0
- package/.turbo/cache/f9d4036dd350ba1a.tar.zst +0 -0
- package/README.md +661 -0
- package/README_ko.md +577 -0
- package/bun.lock +135 -0
- package/package.json +26 -0
- package/packages/agent/.turbo/turbo-build.log +5 -0
- package/packages/agent/.turbo/turbo-typecheck.log +1 -0
- package/packages/agent/dist/connection/hub-client.d.ts +33 -0
- package/packages/agent/dist/connection/hub-client.d.ts.map +1 -0
- package/packages/agent/dist/connection/index.d.ts +2 -0
- package/packages/agent/dist/connection/index.d.ts.map +1 -0
- package/packages/agent/dist/hooks/index.d.ts +3 -0
- package/packages/agent/dist/hooks/index.d.ts.map +1 -0
- package/packages/agent/dist/hooks/intent-hub-hooks.d.ts +47 -0
- package/packages/agent/dist/hooks/intent-hub-hooks.d.ts.map +1 -0
- package/packages/agent/dist/index.d.ts +6 -0
- package/packages/agent/dist/index.d.ts.map +1 -0
- package/packages/agent/dist/index.js +3315 -0
- package/packages/agent/dist/plugin/index.d.ts +3 -0
- package/packages/agent/dist/plugin/index.d.ts.map +1 -0
- package/packages/agent/dist/plugin/intent-hub-plugin.d.ts +54 -0
- package/packages/agent/dist/plugin/intent-hub-plugin.d.ts.map +1 -0
- package/packages/agent/package.json +32 -0
- package/packages/agent/src/connection/hub-client.ts +152 -0
- package/packages/agent/src/connection/index.ts +1 -0
- package/packages/agent/src/hooks/index.ts +2 -0
- package/packages/agent/src/hooks/intent-hub-hooks.ts +245 -0
- package/packages/agent/src/index.ts +5 -0
- package/packages/agent/src/plugin/index.ts +2 -0
- package/packages/agent/src/plugin/intent-hub-plugin.ts +153 -0
- package/packages/agent/tsconfig.json +9 -0
- package/packages/hub/.turbo/turbo-build.log +6 -0
- package/packages/hub/.turbo/turbo-typecheck.log +1 -0
- package/packages/hub/dist/api/dashboard.d.ts +17 -0
- package/packages/hub/dist/api/dashboard.d.ts.map +1 -0
- package/packages/hub/dist/cli.d.ts +3 -0
- package/packages/hub/dist/cli.d.ts.map +1 -0
- package/packages/hub/dist/cli.js +7719 -0
- package/packages/hub/dist/core/conflict-detector.d.ts +36 -0
- package/packages/hub/dist/core/conflict-detector.d.ts.map +1 -0
- package/packages/hub/dist/core/index.d.ts +7 -0
- package/packages/hub/dist/core/index.d.ts.map +1 -0
- package/packages/hub/dist/core/intent-analyzer.d.ts +8 -0
- package/packages/hub/dist/core/intent-analyzer.d.ts.map +1 -0
- package/packages/hub/dist/core/lock-manager.d.ts +13 -0
- package/packages/hub/dist/core/lock-manager.d.ts.map +1 -0
- package/packages/hub/dist/core/orchestrator.d.ts +46 -0
- package/packages/hub/dist/core/orchestrator.d.ts.map +1 -0
- package/packages/hub/dist/index.d.ts +9 -0
- package/packages/hub/dist/index.d.ts.map +1 -0
- package/packages/hub/dist/index.js +4686 -0
- package/packages/hub/dist/llm/index.d.ts +7 -0
- package/packages/hub/dist/llm/index.d.ts.map +1 -0
- package/packages/hub/dist/llm/negotiation-engine.d.ts +40 -0
- package/packages/hub/dist/llm/negotiation-engine.d.ts.map +1 -0
- package/packages/hub/dist/llm/provider.d.ts +46 -0
- package/packages/hub/dist/llm/provider.d.ts.map +1 -0
- package/packages/hub/dist/llm/smart-analyzer.d.ts +20 -0
- package/packages/hub/dist/llm/smart-analyzer.d.ts.map +1 -0
- package/packages/hub/dist/server/hub-server.d.ts +35 -0
- package/packages/hub/dist/server/hub-server.d.ts.map +1 -0
- package/packages/hub/dist/server/index.d.ts +5 -0
- package/packages/hub/dist/server/index.d.ts.map +1 -0
- package/packages/hub/dist/server/message-handler.d.ts +18 -0
- package/packages/hub/dist/server/message-handler.d.ts.map +1 -0
- package/packages/hub/dist/server/smart-hub-server.d.ts +43 -0
- package/packages/hub/dist/server/smart-hub-server.d.ts.map +1 -0
- package/packages/hub/dist/state/index.d.ts +2 -0
- package/packages/hub/dist/state/index.d.ts.map +1 -0
- package/packages/hub/dist/state/session-manager.d.ts +19 -0
- package/packages/hub/dist/state/session-manager.d.ts.map +1 -0
- package/packages/hub/dist/tunnel/index.d.ts +14 -0
- package/packages/hub/dist/tunnel/index.d.ts.map +1 -0
- package/packages/hub/package.json +54 -0
- package/packages/hub/src/api/dashboard.ts +261 -0
- package/packages/hub/src/cli.ts +193 -0
- package/packages/hub/src/core/conflict-detector.ts +138 -0
- package/packages/hub/src/core/index.ts +6 -0
- package/packages/hub/src/core/intent-analyzer.ts +112 -0
- package/packages/hub/src/core/lock-manager.ts +95 -0
- package/packages/hub/src/core/orchestrator.ts +255 -0
- package/packages/hub/src/index.ts +8 -0
- package/packages/hub/src/llm/index.ts +17 -0
- package/packages/hub/src/llm/negotiation-engine.ts +297 -0
- package/packages/hub/src/llm/provider.ts +175 -0
- package/packages/hub/src/llm/smart-analyzer.ts +169 -0
- package/packages/hub/src/server/hub-server.ts +219 -0
- package/packages/hub/src/server/index.ts +4 -0
- package/packages/hub/src/server/message-handler.ts +111 -0
- package/packages/hub/src/server/smart-hub-server.ts +374 -0
- package/packages/hub/src/state/index.ts +1 -0
- package/packages/hub/src/state/session-manager.ts +59 -0
- package/packages/hub/src/tunnel/index.ts +153 -0
- package/packages/hub/tsconfig.json +9 -0
- package/packages/shared/.turbo/turbo-build.log +5 -0
- package/packages/shared/.turbo/turbo-typecheck.log +1 -0
- package/packages/shared/dist/index.d.ts +3 -0
- package/packages/shared/dist/index.d.ts.map +1 -0
- package/packages/shared/dist/index.js +50 -0
- package/packages/shared/dist/types/domain.d.ts +50 -0
- package/packages/shared/dist/types/domain.d.ts.map +1 -0
- package/packages/shared/dist/types/index.d.ts +4 -0
- package/packages/shared/dist/types/index.d.ts.map +1 -0
- package/packages/shared/dist/types/intent.d.ts +24 -0
- package/packages/shared/dist/types/intent.d.ts.map +1 -0
- package/packages/shared/dist/types/message.d.ts +151 -0
- package/packages/shared/dist/types/message.d.ts.map +1 -0
- package/packages/shared/dist/utils/id.d.ts +6 -0
- package/packages/shared/dist/utils/id.d.ts.map +1 -0
- package/packages/shared/dist/utils/index.d.ts +3 -0
- package/packages/shared/dist/utils/index.d.ts.map +1 -0
- package/packages/shared/dist/utils/message.d.ts +5 -0
- package/packages/shared/dist/utils/message.d.ts.map +1 -0
- package/packages/shared/package.json +33 -0
- package/packages/shared/src/index.ts +2 -0
- package/packages/shared/src/types/domain.ts +57 -0
- package/packages/shared/src/types/index.ts +3 -0
- package/packages/shared/src/types/intent.ts +34 -0
- package/packages/shared/src/types/message.ts +188 -0
- package/packages/shared/src/utils/id.ts +21 -0
- package/packages/shared/src/utils/index.ts +2 -0
- package/packages/shared/src/utils/message.ts +30 -0
- package/packages/shared/tsconfig.json +9 -0
- package/scripts/test-e2e.ts +194 -0
- package/scripts/test-mvp2.ts +167 -0
- package/scripts/test-mvp3.ts +405 -0
- package/tsconfig.json +19 -0
- package/turbo.json +22 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export interface SemanticDomain {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
parentId?: string;
|
|
6
|
+
affectedPaths: string[];
|
|
7
|
+
relatedDomains: string[];
|
|
8
|
+
}
|
|
9
|
+
export interface DomainLock {
|
|
10
|
+
domainId: string;
|
|
11
|
+
intentId: string;
|
|
12
|
+
userId: string;
|
|
13
|
+
username: string;
|
|
14
|
+
acquiredAt: number;
|
|
15
|
+
expiresAt?: number;
|
|
16
|
+
status: LockStatus;
|
|
17
|
+
}
|
|
18
|
+
export type LockStatus = 'active' | 'pending' | 'released';
|
|
19
|
+
export interface DomainMap {
|
|
20
|
+
projectId: string;
|
|
21
|
+
domains: SemanticDomain[];
|
|
22
|
+
updatedAt: number;
|
|
23
|
+
}
|
|
24
|
+
export interface Conflict {
|
|
25
|
+
id: string;
|
|
26
|
+
domains: string[];
|
|
27
|
+
intents: string[];
|
|
28
|
+
users: string[];
|
|
29
|
+
detectedAt: number;
|
|
30
|
+
status: ConflictStatus;
|
|
31
|
+
resolution?: ConflictResolution;
|
|
32
|
+
}
|
|
33
|
+
export type ConflictStatus = 'detected' | 'negotiating' | 'escalated' | 'resolved';
|
|
34
|
+
export interface ConflictResolution {
|
|
35
|
+
type: 'auto' | 'user';
|
|
36
|
+
plan: ExecutionPlan;
|
|
37
|
+
decidedAt: number;
|
|
38
|
+
decidedBy?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface ExecutionPlan {
|
|
41
|
+
phases: ExecutionPhase[];
|
|
42
|
+
}
|
|
43
|
+
export interface ExecutionPhase {
|
|
44
|
+
order: number;
|
|
45
|
+
intentId: string;
|
|
46
|
+
userId: string;
|
|
47
|
+
domains: string[];
|
|
48
|
+
dependsOn?: string[];
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=domain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../src/types/domain.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAE3D,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,CAAC,EAAE,kBAAkB,CAAC;CACjC;AAED,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,CAAC;AAEnF,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtB,IAAI,EAAE,aAAa,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface Intent {
|
|
2
|
+
id: string;
|
|
3
|
+
userId: string;
|
|
4
|
+
username: string;
|
|
5
|
+
prompt: string;
|
|
6
|
+
timestamp: number;
|
|
7
|
+
analysis?: IntentAnalysis;
|
|
8
|
+
status: IntentStatus;
|
|
9
|
+
}
|
|
10
|
+
export interface IntentAnalysis {
|
|
11
|
+
domain: string;
|
|
12
|
+
subdomain?: string;
|
|
13
|
+
affectedFiles: string[];
|
|
14
|
+
semanticTags: string[];
|
|
15
|
+
estimatedScope: 'small' | 'medium' | 'large';
|
|
16
|
+
dependencies: string[];
|
|
17
|
+
}
|
|
18
|
+
export type IntentStatus = 'pending' | 'analyzing' | 'ready' | 'blocked' | 'negotiating' | 'executing' | 'completed' | 'cancelled';
|
|
19
|
+
export interface IntentSubmission {
|
|
20
|
+
prompt: string;
|
|
21
|
+
userId: string;
|
|
22
|
+
username: string;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=intent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent.d.ts","sourceRoot":"","sources":["../../src/types/intent.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC7C,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,MAAM,YAAY,GACpB,SAAS,GACT,WAAW,GACX,OAAO,GACP,SAAS,GACT,aAAa,GACb,WAAW,GACX,WAAW,GACX,WAAW,CAAC;AAEhB,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
export interface BaseMessage {
|
|
2
|
+
type: string;
|
|
3
|
+
timestamp: number;
|
|
4
|
+
messageId: string;
|
|
5
|
+
}
|
|
6
|
+
export interface AgentConnectMessage extends BaseMessage {
|
|
7
|
+
type: 'agent:connect';
|
|
8
|
+
payload: {
|
|
9
|
+
userId: string;
|
|
10
|
+
username: string;
|
|
11
|
+
projectPath: string;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
export interface AgentIntentSubmitMessage extends BaseMessage {
|
|
15
|
+
type: 'agent:intent:submit';
|
|
16
|
+
payload: {
|
|
17
|
+
prompt: string;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
export interface AgentDecisionMessage extends BaseMessage {
|
|
21
|
+
type: 'agent:decision';
|
|
22
|
+
payload: {
|
|
23
|
+
conflictId: string;
|
|
24
|
+
choice: string;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export interface AgentHeartbeatMessage extends BaseMessage {
|
|
28
|
+
type: 'agent:heartbeat';
|
|
29
|
+
}
|
|
30
|
+
export type AgentMessage = AgentConnectMessage | AgentIntentSubmitMessage | AgentDecisionMessage | AgentHeartbeatMessage;
|
|
31
|
+
export interface HubConnectedMessage extends BaseMessage {
|
|
32
|
+
type: 'hub:connected';
|
|
33
|
+
payload: {
|
|
34
|
+
sessionId: string;
|
|
35
|
+
activeLocks: Array<{
|
|
36
|
+
domainId: string;
|
|
37
|
+
username: string;
|
|
38
|
+
}>;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
export interface HubIntentReceivedMessage extends BaseMessage {
|
|
42
|
+
type: 'hub:intent:received';
|
|
43
|
+
payload: {
|
|
44
|
+
intentId: string;
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export interface HubIntentAnalyzedMessage extends BaseMessage {
|
|
48
|
+
type: 'hub:intent:analyzed';
|
|
49
|
+
payload: {
|
|
50
|
+
intentId: string;
|
|
51
|
+
analysis: {
|
|
52
|
+
domain: string;
|
|
53
|
+
subdomain?: string;
|
|
54
|
+
affectedFiles: string[];
|
|
55
|
+
semanticTags: string[];
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
export interface HubLockAcquiredMessage extends BaseMessage {
|
|
60
|
+
type: 'hub:lock:acquired';
|
|
61
|
+
payload: {
|
|
62
|
+
intentId: string;
|
|
63
|
+
domains: string[];
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export interface HubLockBlockedMessage extends BaseMessage {
|
|
67
|
+
type: 'hub:lock:blocked';
|
|
68
|
+
payload: {
|
|
69
|
+
intentId: string;
|
|
70
|
+
blockedBy: Array<{
|
|
71
|
+
domain: string;
|
|
72
|
+
username: string;
|
|
73
|
+
intentSummary: string;
|
|
74
|
+
}>;
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
export interface HubNegotiationStartMessage extends BaseMessage {
|
|
78
|
+
type: 'hub:negotiation:start';
|
|
79
|
+
payload: {
|
|
80
|
+
conflictId: string;
|
|
81
|
+
participants: string[];
|
|
82
|
+
domains: string[];
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
export interface HubNegotiationProposalMessage extends BaseMessage {
|
|
86
|
+
type: 'hub:negotiation:proposal';
|
|
87
|
+
payload: {
|
|
88
|
+
conflictId: string;
|
|
89
|
+
fromUser: string;
|
|
90
|
+
proposal: string;
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
export interface HubNegotiationResolvedMessage extends BaseMessage {
|
|
94
|
+
type: 'hub:negotiation:resolved';
|
|
95
|
+
payload: {
|
|
96
|
+
conflictId: string;
|
|
97
|
+
resolution: {
|
|
98
|
+
type: 'auto' | 'user';
|
|
99
|
+
summary: string;
|
|
100
|
+
yourPhase: number;
|
|
101
|
+
};
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
export interface HubDecisionRequiredMessage extends BaseMessage {
|
|
105
|
+
type: 'hub:decision:required';
|
|
106
|
+
payload: {
|
|
107
|
+
conflictId: string;
|
|
108
|
+
question: string;
|
|
109
|
+
options: Array<{
|
|
110
|
+
id: string;
|
|
111
|
+
description: string;
|
|
112
|
+
proposedBy: string;
|
|
113
|
+
}>;
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
export interface HubErrorMessage extends BaseMessage {
|
|
117
|
+
type: 'hub:error';
|
|
118
|
+
payload: {
|
|
119
|
+
code: string;
|
|
120
|
+
message: string;
|
|
121
|
+
details?: unknown;
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
export type HubMessage = HubConnectedMessage | HubIntentReceivedMessage | HubIntentAnalyzedMessage | HubLockAcquiredMessage | HubLockBlockedMessage | HubNegotiationStartMessage | HubNegotiationProposalMessage | HubNegotiationResolvedMessage | HubDecisionRequiredMessage | HubErrorMessage;
|
|
125
|
+
export interface BroadcastLockUpdateMessage extends BaseMessage {
|
|
126
|
+
type: 'broadcast:lock:update';
|
|
127
|
+
payload: {
|
|
128
|
+
locks: Array<{
|
|
129
|
+
domainId: string;
|
|
130
|
+
username: string;
|
|
131
|
+
intentSummary: string;
|
|
132
|
+
}>;
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
export interface BroadcastUserJoinedMessage extends BaseMessage {
|
|
136
|
+
type: 'broadcast:user:joined';
|
|
137
|
+
payload: {
|
|
138
|
+
userId: string;
|
|
139
|
+
username: string;
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
export interface BroadcastUserLeftMessage extends BaseMessage {
|
|
143
|
+
type: 'broadcast:user:left';
|
|
144
|
+
payload: {
|
|
145
|
+
userId: string;
|
|
146
|
+
username: string;
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
export type BroadcastMessage = BroadcastLockUpdateMessage | BroadcastUserJoinedMessage | BroadcastUserLeftMessage;
|
|
150
|
+
export type Message = AgentMessage | HubMessage | BroadcastMessage;
|
|
151
|
+
//# sourceMappingURL=message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH;AAED,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAC3D,IAAI,EAAE,qBAAqB,CAAC;IAC5B,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,oBAAqB,SAAQ,WAAW;IACvD,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,MAAM,MAAM,YAAY,GACpB,mBAAmB,GACnB,wBAAwB,GACxB,oBAAoB,GACpB,qBAAqB,CAAC;AAE1B,MAAM,WAAW,mBAAoB,SAAQ,WAAW;IACtD,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE;QACP,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,KAAK,CAAC;YACjB,QAAQ,EAAE,MAAM,CAAC;YACjB,QAAQ,EAAE,MAAM,CAAC;SAClB,CAAC,CAAC;KACJ,CAAC;CACH;AAED,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAC3D,IAAI,EAAE,qBAAqB,CAAC;IAC5B,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAC3D,IAAI,EAAE,qBAAqB,CAAC;IAC5B,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE;YACR,MAAM,EAAE,MAAM,CAAC;YACf,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,aAAa,EAAE,MAAM,EAAE,CAAC;YACxB,YAAY,EAAE,MAAM,EAAE,CAAC;SACxB,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,sBAAuB,SAAQ,WAAW;IACzD,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,qBAAsB,SAAQ,WAAW;IACxD,IAAI,EAAE,kBAAkB,CAAC;IACzB,OAAO,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,KAAK,CAAC;YACf,MAAM,EAAE,MAAM,CAAC;YACf,QAAQ,EAAE,MAAM,CAAC;YACjB,aAAa,EAAE,MAAM,CAAC;SACvB,CAAC,CAAC;KACJ,CAAC;CACH;AAED,MAAM,WAAW,0BAA2B,SAAQ,WAAW;IAC7D,IAAI,EAAE,uBAAuB,CAAC;IAC9B,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,6BAA8B,SAAQ,WAAW;IAChE,IAAI,EAAE,0BAA0B,CAAC;IACjC,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,6BAA8B,SAAQ,WAAW;IAChE,IAAI,EAAE,0BAA0B,CAAC;IACjC,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE;YACV,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;YACtB,OAAO,EAAE,MAAM,CAAC;YAChB,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,CAAC;CACH;AAED,MAAM,WAAW,0BAA2B,SAAQ,WAAW;IAC7D,IAAI,EAAE,uBAAuB,CAAC;IAC9B,OAAO,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,KAAK,CAAC;YACb,EAAE,EAAE,MAAM,CAAC;YACX,WAAW,EAAE,MAAM,CAAC;YACpB,UAAU,EAAE,MAAM,CAAC;SACpB,CAAC,CAAC;KACJ,CAAC;CACH;AAED,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,CAAC;CACH;AAED,MAAM,MAAM,UAAU,GAClB,mBAAmB,GACnB,wBAAwB,GACxB,wBAAwB,GACxB,sBAAsB,GACtB,qBAAqB,GACrB,0BAA0B,GAC1B,6BAA6B,GAC7B,6BAA6B,GAC7B,0BAA0B,GAC1B,eAAe,CAAC;AAEpB,MAAM,WAAW,0BAA2B,SAAQ,WAAW;IAC7D,IAAI,EAAE,uBAAuB,CAAC;IAC9B,OAAO,EAAE;QACP,KAAK,EAAE,KAAK,CAAC;YACX,QAAQ,EAAE,MAAM,CAAC;YACjB,QAAQ,EAAE,MAAM,CAAC;YACjB,aAAa,EAAE,MAAM,CAAC;SACvB,CAAC,CAAC;KACJ,CAAC;CACH;AAED,MAAM,WAAW,0BAA2B,SAAQ,WAAW;IAC7D,IAAI,EAAE,uBAAuB,CAAC;IAC9B,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAC3D,IAAI,EAAE,qBAAqB,CAAC;IAC5B,OAAO,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,MAAM,MAAM,gBAAgB,GACxB,0BAA0B,GAC1B,0BAA0B,GAC1B,wBAAwB,CAAC;AAE7B,MAAM,MAAM,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function generateId(): string;
|
|
2
|
+
export declare function generateMessageId(): string;
|
|
3
|
+
export declare function generateIntentId(): string;
|
|
4
|
+
export declare function generateConflictId(): string;
|
|
5
|
+
export declare function generateSessionId(): string;
|
|
6
|
+
//# sourceMappingURL=id.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../src/utils/id.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { BaseMessage } from '../types/message.js';
|
|
2
|
+
export declare function createMessage<T extends BaseMessage>(type: T['type'], payload: Omit<T, 'type' | 'timestamp' | 'messageId'>): T;
|
|
3
|
+
export declare function parseMessage(data: string): BaseMessage | null;
|
|
4
|
+
export declare function serializeMessage(message: BaseMessage): string;
|
|
5
|
+
//# sourceMappingURL=message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/utils/message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,wBAAgB,aAAa,CAAC,CAAC,SAAS,WAAW,EACjD,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,EACf,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC,GACnD,CAAC,CAOH;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAU7D;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAE7D"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@anthropic-for-korea/intent-hub-shared",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Shared types and utilities for Intent Hub",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "bun build ./src/index.ts --outdir ./dist --target node && tsc --emitDeclarationOnly",
|
|
19
|
+
"dev": "bun build ./src/index.ts --outdir ./dist --target node --watch",
|
|
20
|
+
"typecheck": "tsc --noEmit",
|
|
21
|
+
"clean": "rm -rf dist"
|
|
22
|
+
},
|
|
23
|
+
"devDependencies": {
|
|
24
|
+
"typescript": "^5.7.0"
|
|
25
|
+
},
|
|
26
|
+
"repository": {
|
|
27
|
+
"type": "git",
|
|
28
|
+
"url": "https://github.com/anthropic-for-korea/intent-hub.git",
|
|
29
|
+
"directory": "packages/shared"
|
|
30
|
+
},
|
|
31
|
+
"license": "MIT",
|
|
32
|
+
"keywords": ["intent-hub", "llm", "ai", "coordination"]
|
|
33
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export interface SemanticDomain {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
parentId?: string;
|
|
6
|
+
affectedPaths: string[];
|
|
7
|
+
relatedDomains: string[];
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface DomainLock {
|
|
11
|
+
domainId: string;
|
|
12
|
+
intentId: string;
|
|
13
|
+
userId: string;
|
|
14
|
+
username: string;
|
|
15
|
+
acquiredAt: number;
|
|
16
|
+
expiresAt?: number;
|
|
17
|
+
status: LockStatus;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export type LockStatus = 'active' | 'pending' | 'released';
|
|
21
|
+
|
|
22
|
+
export interface DomainMap {
|
|
23
|
+
projectId: string;
|
|
24
|
+
domains: SemanticDomain[];
|
|
25
|
+
updatedAt: number;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export interface Conflict {
|
|
29
|
+
id: string;
|
|
30
|
+
domains: string[];
|
|
31
|
+
intents: string[];
|
|
32
|
+
users: string[];
|
|
33
|
+
detectedAt: number;
|
|
34
|
+
status: ConflictStatus;
|
|
35
|
+
resolution?: ConflictResolution;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export type ConflictStatus = 'detected' | 'negotiating' | 'escalated' | 'resolved';
|
|
39
|
+
|
|
40
|
+
export interface ConflictResolution {
|
|
41
|
+
type: 'auto' | 'user';
|
|
42
|
+
plan: ExecutionPlan;
|
|
43
|
+
decidedAt: number;
|
|
44
|
+
decidedBy?: string;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export interface ExecutionPlan {
|
|
48
|
+
phases: ExecutionPhase[];
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export interface ExecutionPhase {
|
|
52
|
+
order: number;
|
|
53
|
+
intentId: string;
|
|
54
|
+
userId: string;
|
|
55
|
+
domains: string[];
|
|
56
|
+
dependsOn?: string[];
|
|
57
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface Intent {
|
|
2
|
+
id: string;
|
|
3
|
+
userId: string;
|
|
4
|
+
username: string;
|
|
5
|
+
prompt: string;
|
|
6
|
+
timestamp: number;
|
|
7
|
+
analysis?: IntentAnalysis;
|
|
8
|
+
status: IntentStatus;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface IntentAnalysis {
|
|
12
|
+
domain: string;
|
|
13
|
+
subdomain?: string;
|
|
14
|
+
affectedFiles: string[];
|
|
15
|
+
semanticTags: string[];
|
|
16
|
+
estimatedScope: 'small' | 'medium' | 'large';
|
|
17
|
+
dependencies: string[];
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export type IntentStatus =
|
|
21
|
+
| 'pending'
|
|
22
|
+
| 'analyzing'
|
|
23
|
+
| 'ready'
|
|
24
|
+
| 'blocked'
|
|
25
|
+
| 'negotiating'
|
|
26
|
+
| 'executing'
|
|
27
|
+
| 'completed'
|
|
28
|
+
| 'cancelled';
|
|
29
|
+
|
|
30
|
+
export interface IntentSubmission {
|
|
31
|
+
prompt: string;
|
|
32
|
+
userId: string;
|
|
33
|
+
username: string;
|
|
34
|
+
}
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
export interface BaseMessage {
|
|
2
|
+
type: string;
|
|
3
|
+
timestamp: number;
|
|
4
|
+
messageId: string;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export interface AgentConnectMessage extends BaseMessage {
|
|
8
|
+
type: 'agent:connect';
|
|
9
|
+
payload: {
|
|
10
|
+
userId: string;
|
|
11
|
+
username: string;
|
|
12
|
+
projectPath: string;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export interface AgentIntentSubmitMessage extends BaseMessage {
|
|
17
|
+
type: 'agent:intent:submit';
|
|
18
|
+
payload: {
|
|
19
|
+
prompt: string;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface AgentDecisionMessage extends BaseMessage {
|
|
24
|
+
type: 'agent:decision';
|
|
25
|
+
payload: {
|
|
26
|
+
conflictId: string;
|
|
27
|
+
choice: string;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface AgentHeartbeatMessage extends BaseMessage {
|
|
32
|
+
type: 'agent:heartbeat';
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export type AgentMessage =
|
|
36
|
+
| AgentConnectMessage
|
|
37
|
+
| AgentIntentSubmitMessage
|
|
38
|
+
| AgentDecisionMessage
|
|
39
|
+
| AgentHeartbeatMessage;
|
|
40
|
+
|
|
41
|
+
export interface HubConnectedMessage extends BaseMessage {
|
|
42
|
+
type: 'hub:connected';
|
|
43
|
+
payload: {
|
|
44
|
+
sessionId: string;
|
|
45
|
+
activeLocks: Array<{
|
|
46
|
+
domainId: string;
|
|
47
|
+
username: string;
|
|
48
|
+
}>;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export interface HubIntentReceivedMessage extends BaseMessage {
|
|
53
|
+
type: 'hub:intent:received';
|
|
54
|
+
payload: {
|
|
55
|
+
intentId: string;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface HubIntentAnalyzedMessage extends BaseMessage {
|
|
60
|
+
type: 'hub:intent:analyzed';
|
|
61
|
+
payload: {
|
|
62
|
+
intentId: string;
|
|
63
|
+
analysis: {
|
|
64
|
+
domain: string;
|
|
65
|
+
subdomain?: string;
|
|
66
|
+
affectedFiles: string[];
|
|
67
|
+
semanticTags: string[];
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export interface HubLockAcquiredMessage extends BaseMessage {
|
|
73
|
+
type: 'hub:lock:acquired';
|
|
74
|
+
payload: {
|
|
75
|
+
intentId: string;
|
|
76
|
+
domains: string[];
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
export interface HubLockBlockedMessage extends BaseMessage {
|
|
81
|
+
type: 'hub:lock:blocked';
|
|
82
|
+
payload: {
|
|
83
|
+
intentId: string;
|
|
84
|
+
blockedBy: Array<{
|
|
85
|
+
domain: string;
|
|
86
|
+
username: string;
|
|
87
|
+
intentSummary: string;
|
|
88
|
+
}>;
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export interface HubNegotiationStartMessage extends BaseMessage {
|
|
93
|
+
type: 'hub:negotiation:start';
|
|
94
|
+
payload: {
|
|
95
|
+
conflictId: string;
|
|
96
|
+
participants: string[];
|
|
97
|
+
domains: string[];
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export interface HubNegotiationProposalMessage extends BaseMessage {
|
|
102
|
+
type: 'hub:negotiation:proposal';
|
|
103
|
+
payload: {
|
|
104
|
+
conflictId: string;
|
|
105
|
+
fromUser: string;
|
|
106
|
+
proposal: string;
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export interface HubNegotiationResolvedMessage extends BaseMessage {
|
|
111
|
+
type: 'hub:negotiation:resolved';
|
|
112
|
+
payload: {
|
|
113
|
+
conflictId: string;
|
|
114
|
+
resolution: {
|
|
115
|
+
type: 'auto' | 'user';
|
|
116
|
+
summary: string;
|
|
117
|
+
yourPhase: number;
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export interface HubDecisionRequiredMessage extends BaseMessage {
|
|
123
|
+
type: 'hub:decision:required';
|
|
124
|
+
payload: {
|
|
125
|
+
conflictId: string;
|
|
126
|
+
question: string;
|
|
127
|
+
options: Array<{
|
|
128
|
+
id: string;
|
|
129
|
+
description: string;
|
|
130
|
+
proposedBy: string;
|
|
131
|
+
}>;
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export interface HubErrorMessage extends BaseMessage {
|
|
136
|
+
type: 'hub:error';
|
|
137
|
+
payload: {
|
|
138
|
+
code: string;
|
|
139
|
+
message: string;
|
|
140
|
+
details?: unknown;
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export type HubMessage =
|
|
145
|
+
| HubConnectedMessage
|
|
146
|
+
| HubIntentReceivedMessage
|
|
147
|
+
| HubIntentAnalyzedMessage
|
|
148
|
+
| HubLockAcquiredMessage
|
|
149
|
+
| HubLockBlockedMessage
|
|
150
|
+
| HubNegotiationStartMessage
|
|
151
|
+
| HubNegotiationProposalMessage
|
|
152
|
+
| HubNegotiationResolvedMessage
|
|
153
|
+
| HubDecisionRequiredMessage
|
|
154
|
+
| HubErrorMessage;
|
|
155
|
+
|
|
156
|
+
export interface BroadcastLockUpdateMessage extends BaseMessage {
|
|
157
|
+
type: 'broadcast:lock:update';
|
|
158
|
+
payload: {
|
|
159
|
+
locks: Array<{
|
|
160
|
+
domainId: string;
|
|
161
|
+
username: string;
|
|
162
|
+
intentSummary: string;
|
|
163
|
+
}>;
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export interface BroadcastUserJoinedMessage extends BaseMessage {
|
|
168
|
+
type: 'broadcast:user:joined';
|
|
169
|
+
payload: {
|
|
170
|
+
userId: string;
|
|
171
|
+
username: string;
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export interface BroadcastUserLeftMessage extends BaseMessage {
|
|
176
|
+
type: 'broadcast:user:left';
|
|
177
|
+
payload: {
|
|
178
|
+
userId: string;
|
|
179
|
+
username: string;
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
export type BroadcastMessage =
|
|
184
|
+
| BroadcastLockUpdateMessage
|
|
185
|
+
| BroadcastUserJoinedMessage
|
|
186
|
+
| BroadcastUserLeftMessage;
|
|
187
|
+
|
|
188
|
+
export type Message = AgentMessage | HubMessage | BroadcastMessage;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { randomUUID } from 'crypto';
|
|
2
|
+
|
|
3
|
+
export function generateId(): string {
|
|
4
|
+
return randomUUID();
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export function generateMessageId(): string {
|
|
8
|
+
return `msg_${randomUUID()}`;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export function generateIntentId(): string {
|
|
12
|
+
return `int_${randomUUID()}`;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export function generateConflictId(): string {
|
|
16
|
+
return `cnf_${randomUUID()}`;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function generateSessionId(): string {
|
|
20
|
+
return `ses_${randomUUID()}`;
|
|
21
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { BaseMessage } from '../types/message.js';
|
|
2
|
+
import { generateMessageId } from './id.js';
|
|
3
|
+
|
|
4
|
+
export function createMessage<T extends BaseMessage>(
|
|
5
|
+
type: T['type'],
|
|
6
|
+
payload: Omit<T, 'type' | 'timestamp' | 'messageId'>
|
|
7
|
+
): T {
|
|
8
|
+
return {
|
|
9
|
+
type,
|
|
10
|
+
timestamp: Date.now(),
|
|
11
|
+
messageId: generateMessageId(),
|
|
12
|
+
...payload,
|
|
13
|
+
} as T;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export function parseMessage(data: string): BaseMessage | null {
|
|
17
|
+
try {
|
|
18
|
+
const parsed = JSON.parse(data);
|
|
19
|
+
if (typeof parsed.type === 'string' && typeof parsed.timestamp === 'number') {
|
|
20
|
+
return parsed as BaseMessage;
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
23
|
+
} catch {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function serializeMessage(message: BaseMessage): string {
|
|
29
|
+
return JSON.stringify(message);
|
|
30
|
+
}
|