@intrect/openswarm 0.2.1 → 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.
Files changed (155) hide show
  1. package/README.md +236 -331
  2. package/config.example.yaml +36 -13
  3. package/dist/adapters/base.d.ts.map +1 -1
  4. package/dist/adapters/base.js +4 -0
  5. package/dist/adapters/base.js.map +1 -1
  6. package/dist/adapters/cryptoQuantAdapter.js +1 -1
  7. package/dist/adapters/cryptoQuantAdapter.js.map +1 -1
  8. package/dist/adapters/gpt.d.ts +15 -0
  9. package/dist/adapters/gpt.d.ts.map +1 -0
  10. package/dist/adapters/gpt.js +274 -0
  11. package/dist/adapters/gpt.js.map +1 -0
  12. package/dist/adapters/index.d.ts +2 -0
  13. package/dist/adapters/index.d.ts.map +1 -1
  14. package/dist/adapters/index.js +6 -0
  15. package/dist/adapters/index.js.map +1 -1
  16. package/dist/adapters/local.d.ts +22 -0
  17. package/dist/adapters/local.d.ts.map +1 -0
  18. package/dist/adapters/local.js +277 -0
  19. package/dist/adapters/local.js.map +1 -0
  20. package/dist/adapters/types.d.ts +6 -1
  21. package/dist/adapters/types.d.ts.map +1 -1
  22. package/dist/agents/pairPipeline.d.ts.map +1 -1
  23. package/dist/agents/pairPipeline.js +21 -6
  24. package/dist/agents/pairPipeline.js.map +1 -1
  25. package/dist/agents/pipelineGuards.d.ts.map +1 -1
  26. package/dist/agents/pipelineGuards.js +84 -2
  27. package/dist/agents/pipelineGuards.js.map +1 -1
  28. package/dist/auth/index.d.ts +3 -0
  29. package/dist/auth/index.d.ts.map +1 -0
  30. package/dist/auth/index.js +6 -0
  31. package/dist/auth/index.js.map +1 -0
  32. package/dist/auth/oauthPkce.d.ts +21 -0
  33. package/dist/auth/oauthPkce.d.ts.map +1 -0
  34. package/dist/auth/oauthPkce.js +212 -0
  35. package/dist/auth/oauthPkce.js.map +1 -0
  36. package/dist/auth/oauthStore.d.ts +24 -0
  37. package/dist/auth/oauthStore.d.ts.map +1 -0
  38. package/dist/auth/oauthStore.js +96 -0
  39. package/dist/auth/oauthStore.js.map +1 -0
  40. package/dist/automation/autonomousRunner.d.ts +5 -5
  41. package/dist/automation/runnerTypes.d.ts +1 -1
  42. package/dist/automation/runnerTypes.d.ts.map +1 -1
  43. package/dist/cli/authHandler.d.ts +16 -0
  44. package/dist/cli/authHandler.d.ts.map +1 -0
  45. package/dist/cli/authHandler.js +93 -0
  46. package/dist/cli/authHandler.js.map +1 -0
  47. package/dist/cli/checkHandler.d.ts +25 -0
  48. package/dist/cli/checkHandler.d.ts.map +1 -0
  49. package/dist/cli/checkHandler.js +465 -0
  50. package/dist/cli/checkHandler.js.map +1 -0
  51. package/dist/cli.js +69 -0
  52. package/dist/cli.js.map +1 -1
  53. package/dist/core/config.d.ts +17 -4
  54. package/dist/core/config.d.ts.map +1 -1
  55. package/dist/core/config.js +21 -8
  56. package/dist/core/config.js.map +1 -1
  57. package/dist/core/service.d.ts.map +1 -1
  58. package/dist/core/service.js +18 -8
  59. package/dist/core/service.js.map +1 -1
  60. package/dist/core/types.d.ts +4 -2
  61. package/dist/core/types.d.ts.map +1 -1
  62. package/dist/issues/graphql/resolvers.d.ts +252 -0
  63. package/dist/issues/graphql/resolvers.d.ts.map +1 -0
  64. package/dist/issues/graphql/resolvers.js +88 -0
  65. package/dist/issues/graphql/resolvers.js.map +1 -0
  66. package/dist/issues/graphql/server.d.ts +13 -0
  67. package/dist/issues/graphql/server.d.ts.map +1 -0
  68. package/dist/issues/graphql/server.js +56 -0
  69. package/dist/issues/graphql/server.js.map +1 -0
  70. package/dist/issues/graphql/typeDefs.d.ts +2 -0
  71. package/dist/issues/graphql/typeDefs.d.ts.map +1 -0
  72. package/dist/issues/graphql/typeDefs.js +251 -0
  73. package/dist/issues/graphql/typeDefs.js.map +1 -0
  74. package/dist/issues/index.d.ts +8 -0
  75. package/dist/issues/index.d.ts.map +1 -0
  76. package/dist/issues/index.js +11 -0
  77. package/dist/issues/index.js.map +1 -0
  78. package/dist/issues/issueBoardHtml.d.ts +2 -0
  79. package/dist/issues/issueBoardHtml.d.ts.map +1 -0
  80. package/dist/issues/issueBoardHtml.js +677 -0
  81. package/dist/issues/issueBoardHtml.js.map +1 -0
  82. package/dist/issues/linearBridge.d.ts +27 -0
  83. package/dist/issues/linearBridge.d.ts.map +1 -0
  84. package/dist/issues/linearBridge.js +211 -0
  85. package/dist/issues/linearBridge.js.map +1 -0
  86. package/dist/issues/memoryBridge.d.ts +35 -0
  87. package/dist/issues/memoryBridge.d.ts.map +1 -0
  88. package/dist/issues/memoryBridge.js +184 -0
  89. package/dist/issues/memoryBridge.js.map +1 -0
  90. package/dist/issues/schema.d.ts +162 -0
  91. package/dist/issues/schema.d.ts.map +1 -0
  92. package/dist/issues/schema.js +121 -0
  93. package/dist/issues/schema.js.map +1 -0
  94. package/dist/issues/sqliteStore.d.ts +90 -0
  95. package/dist/issues/sqliteStore.d.ts.map +1 -0
  96. package/dist/issues/sqliteStore.js +488 -0
  97. package/dist/issues/sqliteStore.js.map +1 -0
  98. package/dist/knowledge/index.d.ts.map +1 -1
  99. package/dist/knowledge/index.js +9 -3
  100. package/dist/knowledge/index.js.map +1 -1
  101. package/dist/linear/linear.d.ts +4 -0
  102. package/dist/linear/linear.d.ts.map +1 -1
  103. package/dist/linear/linear.js +27 -0
  104. package/dist/linear/linear.js.map +1 -1
  105. package/dist/registry/bsDetector.d.ts +24 -0
  106. package/dist/registry/bsDetector.d.ts.map +1 -0
  107. package/dist/registry/bsDetector.js +276 -0
  108. package/dist/registry/bsDetector.js.map +1 -0
  109. package/dist/registry/entityScanner.d.ts +36 -0
  110. package/dist/registry/entityScanner.d.ts.map +1 -0
  111. package/dist/registry/entityScanner.js +693 -0
  112. package/dist/registry/entityScanner.js.map +1 -0
  113. package/dist/registry/graphql/resolvers.d.ts +778 -0
  114. package/dist/registry/graphql/resolvers.d.ts.map +1 -0
  115. package/dist/registry/graphql/resolvers.js +127 -0
  116. package/dist/registry/graphql/resolvers.js.map +1 -0
  117. package/dist/registry/graphql/typeDefs.d.ts +2 -0
  118. package/dist/registry/graphql/typeDefs.d.ts.map +1 -0
  119. package/dist/registry/graphql/typeDefs.js +276 -0
  120. package/dist/registry/graphql/typeDefs.js.map +1 -0
  121. package/dist/registry/index.d.ts +12 -0
  122. package/dist/registry/index.d.ts.map +1 -0
  123. package/dist/registry/index.js +18 -0
  124. package/dist/registry/index.js.map +1 -0
  125. package/dist/registry/issueBridge.d.ts +8 -0
  126. package/dist/registry/issueBridge.d.ts.map +1 -0
  127. package/dist/registry/issueBridge.js +30 -0
  128. package/dist/registry/issueBridge.js.map +1 -0
  129. package/dist/registry/memoryBridge.d.ts +13 -0
  130. package/dist/registry/memoryBridge.d.ts.map +1 -0
  131. package/dist/registry/memoryBridge.js +60 -0
  132. package/dist/registry/memoryBridge.js.map +1 -0
  133. package/dist/registry/schema.d.ts +307 -0
  134. package/dist/registry/schema.d.ts.map +1 -0
  135. package/dist/registry/schema.js +139 -0
  136. package/dist/registry/schema.js.map +1 -0
  137. package/dist/registry/sqliteStore.d.ts +101 -0
  138. package/dist/registry/sqliteStore.d.ts.map +1 -0
  139. package/dist/registry/sqliteStore.js +688 -0
  140. package/dist/registry/sqliteStore.js.map +1 -0
  141. package/dist/support/chatBackend.d.ts.map +1 -1
  142. package/dist/support/chatBackend.js +35 -4
  143. package/dist/support/chatBackend.js.map +1 -1
  144. package/dist/support/chatTui.d.ts.map +1 -1
  145. package/dist/support/chatTui.js +109 -3
  146. package/dist/support/chatTui.js.map +1 -1
  147. package/dist/support/dashboardHtml.d.ts +1 -1
  148. package/dist/support/dashboardHtml.d.ts.map +1 -1
  149. package/dist/support/dashboardHtml.js +1 -0
  150. package/dist/support/dashboardHtml.js.map +1 -1
  151. package/dist/support/web.d.ts.map +1 -1
  152. package/dist/support/web.js +16 -3
  153. package/dist/support/web.js.map +1 -1
  154. package/package.json +9 -3
  155. package/templates/TOOLS.md +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvers.d.ts","sourceRoot":"","sources":["../../../src/registry/graphql/resolvers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ // ============================================
2
+ // OpenSwarm - Code Registry GraphQL Resolvers
3
+ // Created: 2026-04-10
4
+ // Purpose: Query + Mutation 리졸버
5
+ // ============================================
6
+ import { getRegistryStore } from '../sqliteStore.js';
7
+ import { onEntityDeprecated, onEntityWarningAdded } from '../memoryBridge.js';
8
+ export const registryResolvers = {
9
+ Query: {
10
+ codeEntity: (_, { id }) => {
11
+ return getRegistryStore().getEntity(id);
12
+ },
13
+ codeEntityByName: (_, { qualifiedName }) => {
14
+ return getRegistryStore().getEntityByName(qualifiedName);
15
+ },
16
+ codeEntities: (_, { filter }) => {
17
+ return getRegistryStore().listEntities(filter);
18
+ },
19
+ fileBrief: (_, { filePath }) => {
20
+ return getRegistryStore().fileBrief(filePath);
21
+ },
22
+ registryStats: (_, { projectId }) => {
23
+ return getRegistryStore().getStats(projectId);
24
+ },
25
+ deprecatedEntities: (_, { projectId }) => {
26
+ return getRegistryStore().deprecatedEntities(projectId);
27
+ },
28
+ untestedEntities: (_, { projectId }) => {
29
+ return getRegistryStore().untestedEntities(projectId);
30
+ },
31
+ highRiskEntities: (_, { projectId }) => {
32
+ return getRegistryStore().highRiskEntities(projectId);
33
+ },
34
+ entitiesByTag: (_, { tag, value }) => {
35
+ return getRegistryStore().entitiesByTag(tag, value ?? undefined);
36
+ },
37
+ entityWarnings: (_, { severity }) => {
38
+ return getRegistryStore().getUnresolvedWarnings(severity);
39
+ },
40
+ searchEntities: (_, { query, limit }) => {
41
+ return getRegistryStore().searchEntities(query, limit ?? 20);
42
+ },
43
+ },
44
+ Mutation: {
45
+ registerEntity: (_, { input }) => {
46
+ return getRegistryStore().registerEntity(input);
47
+ },
48
+ bulkRegisterEntities: (_, { input }) => {
49
+ return getRegistryStore().bulkRegisterEntities(input);
50
+ },
51
+ updateEntity: (_, { id, input }) => {
52
+ return getRegistryStore().updateEntity(id, input);
53
+ },
54
+ removeEntity: (_, { id }) => {
55
+ return getRegistryStore().removeEntity(id);
56
+ },
57
+ deprecateEntity: (_, { id, reason }) => {
58
+ const store = getRegistryStore();
59
+ const entity = store.deprecateEntity(id, reason ?? undefined);
60
+ if (entity) {
61
+ onEntityDeprecated(entity).catch(err => console.warn('[Registry] 메모리 브릿지 실패:', err));
62
+ }
63
+ return entity;
64
+ },
65
+ changeEntityStatus: (_, { id, status, actor }) => {
66
+ return getRegistryStore().changeEntityStatus(id, status, actor ?? 'system');
67
+ },
68
+ addEntityTag: (_, { entityId, tag, value }) => {
69
+ const store = getRegistryStore();
70
+ store.addTag(entityId, tag, value ?? undefined);
71
+ return store.getEntity(entityId);
72
+ },
73
+ removeEntityTag: (_, { entityId, tag }) => {
74
+ const store = getRegistryStore();
75
+ store.removeTag(entityId, tag);
76
+ return store.getEntity(entityId);
77
+ },
78
+ addEntityWarning: (_, { entityId, severity, category, message }) => {
79
+ const store = getRegistryStore();
80
+ const warning = store.addWarning(entityId, severity, category, message);
81
+ const entity = store.getEntity(entityId);
82
+ if (entity) {
83
+ onEntityWarningAdded(entity, warning).catch(err => console.warn('[Registry] 메모리 브릿지 실패:', err));
84
+ }
85
+ return warning;
86
+ },
87
+ resolveWarning: (_, { warningId }) => {
88
+ return getRegistryStore().resolveWarning(warningId);
89
+ },
90
+ addEntityRelation: (_, { sourceId, targetId, relationType }) => {
91
+ getRegistryStore().addRelation(sourceId, targetId, relationType);
92
+ return true;
93
+ },
94
+ removeEntityRelation: (_, { sourceId, targetId, relationType }) => {
95
+ getRegistryStore().removeRelation(sourceId, targetId, relationType);
96
+ return true;
97
+ },
98
+ linkEntityToIssue: (_, { entityId, issueId }) => {
99
+ getRegistryStore().linkIssue(entityId, issueId);
100
+ return true;
101
+ },
102
+ unlinkEntityFromIssue: (_, { entityId, issueId }) => {
103
+ getRegistryStore().unlinkIssue(entityId, issueId);
104
+ return true;
105
+ },
106
+ linkEntityToMemory: (_, { entityId, memoryId }) => {
107
+ getRegistryStore().linkMemory(entityId, memoryId);
108
+ return true;
109
+ },
110
+ addEntityNote: (_, { entityId, content, actor }) => {
111
+ return getRegistryStore().addEvent(entityId, 'note_added', {
112
+ content,
113
+ actor: actor ?? 'system',
114
+ });
115
+ },
116
+ },
117
+ // 필드 리졸버: CodeEntity.relations, CodeEntity.events
118
+ CodeEntity: {
119
+ relations: (entity) => {
120
+ return getRegistryStore().getRelations(entity.id);
121
+ },
122
+ events: (entity, { limit }) => {
123
+ return getRegistryStore().getEvents(entity.id, limit ?? 20);
124
+ },
125
+ },
126
+ };
127
+ //# sourceMappingURL=resolvers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolvers.js","sourceRoot":"","sources":["../../../src/registry/graphql/resolvers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const registryTypeDefs = "\n extend type Query {\n # \uC5D4\uD2F0\uD2F0 \uC870\uD68C\n codeEntity(id: ID!): CodeEntity\n codeEntityByName(qualifiedName: String!): CodeEntity\n codeEntities(filter: CodeEntityFilterInput): CodeEntityConnection!\n\n # \uC6D0\uC0F7 \uBE0C\uB9AC\uD551 (\uC5D0\uC774\uC804\uD2B8 \uD575\uC2EC \uC0AC\uC6A9 \uC0AC\uB840)\n fileBrief(filePath: String!): FileBrief!\n registryStats(projectId: String): RegistryStats!\n\n # \uD2B9\uD654 \uCFFC\uB9AC\n deprecatedEntities(projectId: String): [CodeEntity!]!\n untestedEntities(projectId: String): [CodeEntity!]!\n highRiskEntities(projectId: String): [CodeEntity!]!\n entitiesByTag(tag: String!, value: String): [CodeEntity!]!\n entityWarnings(severity: WarningSeverity): [EntityWarning!]!\n\n # \uC804\uBB38\uAC80\uC0C9\n searchEntities(query: String!, limit: Int): [CodeEntity!]!\n }\n\n extend type Mutation {\n # \uC5D4\uD2F0\uD2F0 CRUD\n registerEntity(input: RegisterEntityInput!): CodeEntity!\n bulkRegisterEntities(input: [RegisterEntityInput!]!): [CodeEntity!]!\n updateEntity(id: ID!, input: UpdateEntityInput!): CodeEntity\n removeEntity(id: ID!): Boolean!\n\n # \uC0C1\uD0DC \uAD00\uB9AC\n deprecateEntity(id: ID!, reason: String): CodeEntity\n changeEntityStatus(id: ID!, status: EntityStatus!, actor: String): CodeEntity\n\n # \uD0DC\uADF8\n addEntityTag(entityId: ID!, tag: String!, value: String): CodeEntity\n removeEntityTag(entityId: ID!, tag: String!): CodeEntity\n\n # \uACBD\uACE0\n addEntityWarning(entityId: ID!, severity: WarningSeverity!, category: WarningCategory!, message: String!): EntityWarning!\n resolveWarning(warningId: ID!): Boolean!\n\n # \uAD00\uACC4\n addEntityRelation(sourceId: ID!, targetId: ID!, relationType: RelationType!): Boolean!\n removeEntityRelation(sourceId: ID!, targetId: ID!, relationType: RelationType!): Boolean!\n\n # \uC774\uC288 \uC5F0\uACB0\n linkEntityToIssue(entityId: ID!, issueId: ID!): Boolean!\n unlinkEntityFromIssue(entityId: ID!, issueId: ID!): Boolean!\n\n # \uBA54\uBAA8\uB9AC \uC5F0\uACB0\n linkEntityToMemory(entityId: ID!, memoryId: String!): Boolean!\n\n # \uB178\uD2B8\n addEntityNote(entityId: ID!, content: String!, actor: String): EntityEvent!\n }\n\n # ---- Types ----\n\n type CodeEntity {\n id: ID!\n projectId: String!\n kind: EntityKind!\n name: String!\n qualifiedName: String!\n filePath: String!\n lineStart: Int\n lineEnd: Int\n signature: String\n status: EntityStatus!\n deprecatedAt: String\n deprecatedReason: String\n hasTests: Boolean!\n testFile: String\n author: String\n maintainer: String\n complexityScore: Int\n riskLevel: RiskLevel!\n description: String!\n notes: String!\n knowledgeNodeId: String\n tags: [EntityTag!]!\n warnings: [EntityWarning!]!\n relations: [EntityRelation!]!\n linkedIssueIds: [String!]!\n linkedMemoryIds: [String!]!\n events(limit: Int): [EntityEvent!]!\n createdAt: String!\n updatedAt: String!\n }\n\n type CodeEntityConnection {\n entities: [CodeEntity!]!\n total: Int!\n }\n\n type EntityTag {\n tag: String!\n value: String\n }\n\n type EntityWarning {\n id: ID!\n entityId: String!\n severity: WarningSeverity!\n category: WarningCategory!\n message: String!\n resolved: Boolean!\n resolvedAt: String\n createdAt: String!\n }\n\n type EntityRelation {\n targetId: String!\n targetName: String!\n relationType: RelationType!\n }\n\n type EntityEvent {\n id: ID!\n entityId: String!\n type: EntityEventType!\n oldValue: String\n newValue: String\n content: String\n actor: String!\n createdAt: String!\n }\n\n type FileBrief {\n filePath: String!\n summary: String!\n entities: [CodeEntity!]!\n }\n\n type RegistryStats {\n total: Int!\n byKind: [KindCount!]!\n byStatus: [RegistryStatusCount!]!\n deprecated: Int!\n untested: Int!\n highRisk: Int!\n withWarnings: Int!\n }\n\n type KindCount {\n kind: String!\n count: Int!\n }\n\n type RegistryStatusCount {\n status: String!\n count: Int!\n }\n\n # ---- Enums ----\n\n enum EntityKind {\n function\n class\n module\n type\n constant\n }\n\n enum EntityStatus {\n active\n deprecated\n experimental\n planned\n broken\n }\n\n enum RiskLevel {\n low\n medium\n high\n }\n\n enum WarningSeverity {\n info\n warning\n error\n critical\n }\n\n enum WarningCategory {\n security\n performance\n correctness\n style\n }\n\n enum RelationType {\n calls\n extends\n implements\n uses\n overrides\n }\n\n enum EntityEventType {\n created\n updated\n deprecated\n status_changed\n warning_added\n warning_resolved\n tag_added\n tag_removed\n issue_linked\n memory_linked\n note_added\n }\n\n # ---- Inputs ----\n\n input RegisterEntityInput {\n projectId: String!\n kind: EntityKind!\n name: String!\n filePath: String!\n lineStart: Int\n lineEnd: Int\n signature: String\n status: EntityStatus\n hasTests: Boolean\n testFile: String\n author: String\n maintainer: String\n complexityScore: Int\n riskLevel: RiskLevel\n description: String\n notes: String\n knowledgeNodeId: String\n tags: [TagInput!]\n }\n\n input UpdateEntityInput {\n name: String\n lineStart: Int\n lineEnd: Int\n signature: String\n hasTests: Boolean\n testFile: String\n maintainer: String\n complexityScore: Int\n riskLevel: RiskLevel\n description: String\n notes: String\n }\n\n input CodeEntityFilterInput {\n projectId: String\n kind: [EntityKind!]\n status: [EntityStatus!]\n filePath: String\n hasTests: Boolean\n riskLevel: [RiskLevel!]\n tags: [String!]\n author: String\n search: String\n limit: Int\n offset: Int\n }\n\n input TagInput {\n tag: String!\n value: String\n }\n";
2
+ //# sourceMappingURL=typeDefs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeDefs.d.ts","sourceRoot":"","sources":["../../../src/registry/graphql/typeDefs.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,gBAAgB,m8LA6Q5B,CAAC"}
@@ -0,0 +1,276 @@
1
+ // ============================================
2
+ // OpenSwarm - Code Registry GraphQL Type Definitions
3
+ // Created: 2026-04-10
4
+ // Purpose: 코드 엔티티 레지스트리 GraphQL 스키마
5
+ // ============================================
6
+ export const registryTypeDefs = /* GraphQL */ `
7
+ extend type Query {
8
+ # 엔티티 조회
9
+ codeEntity(id: ID!): CodeEntity
10
+ codeEntityByName(qualifiedName: String!): CodeEntity
11
+ codeEntities(filter: CodeEntityFilterInput): CodeEntityConnection!
12
+
13
+ # 원샷 브리핑 (에이전트 핵심 사용 사례)
14
+ fileBrief(filePath: String!): FileBrief!
15
+ registryStats(projectId: String): RegistryStats!
16
+
17
+ # 특화 쿼리
18
+ deprecatedEntities(projectId: String): [CodeEntity!]!
19
+ untestedEntities(projectId: String): [CodeEntity!]!
20
+ highRiskEntities(projectId: String): [CodeEntity!]!
21
+ entitiesByTag(tag: String!, value: String): [CodeEntity!]!
22
+ entityWarnings(severity: WarningSeverity): [EntityWarning!]!
23
+
24
+ # 전문검색
25
+ searchEntities(query: String!, limit: Int): [CodeEntity!]!
26
+ }
27
+
28
+ extend type Mutation {
29
+ # 엔티티 CRUD
30
+ registerEntity(input: RegisterEntityInput!): CodeEntity!
31
+ bulkRegisterEntities(input: [RegisterEntityInput!]!): [CodeEntity!]!
32
+ updateEntity(id: ID!, input: UpdateEntityInput!): CodeEntity
33
+ removeEntity(id: ID!): Boolean!
34
+
35
+ # 상태 관리
36
+ deprecateEntity(id: ID!, reason: String): CodeEntity
37
+ changeEntityStatus(id: ID!, status: EntityStatus!, actor: String): CodeEntity
38
+
39
+ # 태그
40
+ addEntityTag(entityId: ID!, tag: String!, value: String): CodeEntity
41
+ removeEntityTag(entityId: ID!, tag: String!): CodeEntity
42
+
43
+ # 경고
44
+ addEntityWarning(entityId: ID!, severity: WarningSeverity!, category: WarningCategory!, message: String!): EntityWarning!
45
+ resolveWarning(warningId: ID!): Boolean!
46
+
47
+ # 관계
48
+ addEntityRelation(sourceId: ID!, targetId: ID!, relationType: RelationType!): Boolean!
49
+ removeEntityRelation(sourceId: ID!, targetId: ID!, relationType: RelationType!): Boolean!
50
+
51
+ # 이슈 연결
52
+ linkEntityToIssue(entityId: ID!, issueId: ID!): Boolean!
53
+ unlinkEntityFromIssue(entityId: ID!, issueId: ID!): Boolean!
54
+
55
+ # 메모리 연결
56
+ linkEntityToMemory(entityId: ID!, memoryId: String!): Boolean!
57
+
58
+ # 노트
59
+ addEntityNote(entityId: ID!, content: String!, actor: String): EntityEvent!
60
+ }
61
+
62
+ # ---- Types ----
63
+
64
+ type CodeEntity {
65
+ id: ID!
66
+ projectId: String!
67
+ kind: EntityKind!
68
+ name: String!
69
+ qualifiedName: String!
70
+ filePath: String!
71
+ lineStart: Int
72
+ lineEnd: Int
73
+ signature: String
74
+ status: EntityStatus!
75
+ deprecatedAt: String
76
+ deprecatedReason: String
77
+ hasTests: Boolean!
78
+ testFile: String
79
+ author: String
80
+ maintainer: String
81
+ complexityScore: Int
82
+ riskLevel: RiskLevel!
83
+ description: String!
84
+ notes: String!
85
+ knowledgeNodeId: String
86
+ tags: [EntityTag!]!
87
+ warnings: [EntityWarning!]!
88
+ relations: [EntityRelation!]!
89
+ linkedIssueIds: [String!]!
90
+ linkedMemoryIds: [String!]!
91
+ events(limit: Int): [EntityEvent!]!
92
+ createdAt: String!
93
+ updatedAt: String!
94
+ }
95
+
96
+ type CodeEntityConnection {
97
+ entities: [CodeEntity!]!
98
+ total: Int!
99
+ }
100
+
101
+ type EntityTag {
102
+ tag: String!
103
+ value: String
104
+ }
105
+
106
+ type EntityWarning {
107
+ id: ID!
108
+ entityId: String!
109
+ severity: WarningSeverity!
110
+ category: WarningCategory!
111
+ message: String!
112
+ resolved: Boolean!
113
+ resolvedAt: String
114
+ createdAt: String!
115
+ }
116
+
117
+ type EntityRelation {
118
+ targetId: String!
119
+ targetName: String!
120
+ relationType: RelationType!
121
+ }
122
+
123
+ type EntityEvent {
124
+ id: ID!
125
+ entityId: String!
126
+ type: EntityEventType!
127
+ oldValue: String
128
+ newValue: String
129
+ content: String
130
+ actor: String!
131
+ createdAt: String!
132
+ }
133
+
134
+ type FileBrief {
135
+ filePath: String!
136
+ summary: String!
137
+ entities: [CodeEntity!]!
138
+ }
139
+
140
+ type RegistryStats {
141
+ total: Int!
142
+ byKind: [KindCount!]!
143
+ byStatus: [RegistryStatusCount!]!
144
+ deprecated: Int!
145
+ untested: Int!
146
+ highRisk: Int!
147
+ withWarnings: Int!
148
+ }
149
+
150
+ type KindCount {
151
+ kind: String!
152
+ count: Int!
153
+ }
154
+
155
+ type RegistryStatusCount {
156
+ status: String!
157
+ count: Int!
158
+ }
159
+
160
+ # ---- Enums ----
161
+
162
+ enum EntityKind {
163
+ function
164
+ class
165
+ module
166
+ type
167
+ constant
168
+ }
169
+
170
+ enum EntityStatus {
171
+ active
172
+ deprecated
173
+ experimental
174
+ planned
175
+ broken
176
+ }
177
+
178
+ enum RiskLevel {
179
+ low
180
+ medium
181
+ high
182
+ }
183
+
184
+ enum WarningSeverity {
185
+ info
186
+ warning
187
+ error
188
+ critical
189
+ }
190
+
191
+ enum WarningCategory {
192
+ security
193
+ performance
194
+ correctness
195
+ style
196
+ }
197
+
198
+ enum RelationType {
199
+ calls
200
+ extends
201
+ implements
202
+ uses
203
+ overrides
204
+ }
205
+
206
+ enum EntityEventType {
207
+ created
208
+ updated
209
+ deprecated
210
+ status_changed
211
+ warning_added
212
+ warning_resolved
213
+ tag_added
214
+ tag_removed
215
+ issue_linked
216
+ memory_linked
217
+ note_added
218
+ }
219
+
220
+ # ---- Inputs ----
221
+
222
+ input RegisterEntityInput {
223
+ projectId: String!
224
+ kind: EntityKind!
225
+ name: String!
226
+ filePath: String!
227
+ lineStart: Int
228
+ lineEnd: Int
229
+ signature: String
230
+ status: EntityStatus
231
+ hasTests: Boolean
232
+ testFile: String
233
+ author: String
234
+ maintainer: String
235
+ complexityScore: Int
236
+ riskLevel: RiskLevel
237
+ description: String
238
+ notes: String
239
+ knowledgeNodeId: String
240
+ tags: [TagInput!]
241
+ }
242
+
243
+ input UpdateEntityInput {
244
+ name: String
245
+ lineStart: Int
246
+ lineEnd: Int
247
+ signature: String
248
+ hasTests: Boolean
249
+ testFile: String
250
+ maintainer: String
251
+ complexityScore: Int
252
+ riskLevel: RiskLevel
253
+ description: String
254
+ notes: String
255
+ }
256
+
257
+ input CodeEntityFilterInput {
258
+ projectId: String
259
+ kind: [EntityKind!]
260
+ status: [EntityStatus!]
261
+ filePath: String
262
+ hasTests: Boolean
263
+ riskLevel: [RiskLevel!]
264
+ tags: [String!]
265
+ author: String
266
+ search: String
267
+ limit: Int
268
+ offset: Int
269
+ }
270
+
271
+ input TagInput {
272
+ tag: String!
273
+ value: String
274
+ }
275
+ `;
276
+ //# sourceMappingURL=typeDefs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeDefs.js","sourceRoot":"","sources":["../../../src/registry/graphql/typeDefs.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,qDAAqD;AACrD,sBAAsB;AACtB,oCAAoC;AACpC,+CAA+C;AAE/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6Q7C,CAAC"}
@@ -0,0 +1,12 @@
1
+ export { SqliteRegistryStore, getRegistryStore, closeRegistryStore, } from './sqliteStore.js';
2
+ export type { RegisterEntityInput, UpdateEntityInput } from './sqliteStore.js';
3
+ export type { EntityKind, EntityStatus, RiskLevel, WarningSeverity, WarningCategory, RelationType, EntityEventType, EntityTag, EntityWarning, EntityRelation, EntityEvent, CodeEntity, CodeEntityFilter, FileBrief, RegistryStats, } from './schema.js';
4
+ export { registryTypeDefs } from './graphql/typeDefs.js';
5
+ export { registryResolvers } from './graphql/resolvers.js';
6
+ export { scanRepository, extractEntities } from './entityScanner.js';
7
+ export type { ScanResult, ExtractedEntity } from './entityScanner.js';
8
+ export { scanRepository as scanBs, scanFile as scanFileForBs, scanFileContent, aggregateResults } from './bsDetector.js';
9
+ export type { BsIssue, BsScanResult, BsSeverity } from './bsDetector.js';
10
+ export { onEntityDeprecated, onEntityWarningAdded } from './memoryBridge.js';
11
+ export { getEntitiesForIssue } from './issueBridge.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG/E,YAAY,EACV,UAAU,EAAE,YAAY,EAAE,SAAS,EACnC,eAAe,EAAE,eAAe,EAAE,YAAY,EAC9C,eAAe,EAAE,SAAS,EAAE,aAAa,EAAE,cAAc,EACzD,WAAW,EAAE,UAAU,EAAE,gBAAgB,EACzC,SAAS,EAAE,aAAa,GACzB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrE,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGtE,OAAO,EAAE,cAAc,IAAI,MAAM,EAAE,QAAQ,IAAI,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACzH,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGzE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,18 @@
1
+ // ============================================
2
+ // OpenSwarm - Code Registry Module
3
+ // Created: 2026-04-10
4
+ // Purpose: 코드 엔티티 레지스트리 퍼블릭 API
5
+ // ============================================
6
+ // Store
7
+ export { SqliteRegistryStore, getRegistryStore, closeRegistryStore, } from './sqliteStore.js';
8
+ // GraphQL
9
+ export { registryTypeDefs } from './graphql/typeDefs.js';
10
+ export { registryResolvers } from './graphql/resolvers.js';
11
+ // Scanner
12
+ export { scanRepository, extractEntities } from './entityScanner.js';
13
+ // BS Detector
14
+ export { scanRepository as scanBs, scanFile as scanFileForBs, scanFileContent, aggregateResults } from './bsDetector.js';
15
+ // Bridges
16
+ export { onEntityDeprecated, onEntityWarningAdded } from './memoryBridge.js';
17
+ export { getEntitiesForIssue } from './issueBridge.js';
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,mCAAmC;AACnC,sBAAsB;AACtB,gCAAgC;AAChC,+CAA+C;AAE/C,QAAQ;AACR,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAY1B,UAAU;AACV,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,UAAU;AACV,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrE,cAAc;AACd,OAAO,EAAE,cAAc,IAAI,MAAM,EAAE,QAAQ,IAAI,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGzH,UAAU;AACV,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { CodeEntity } from './schema.js';
2
+ /**
3
+ * 이슈에 연결된 코드 엔티티 조회
4
+ * - 명시적으로 linkEntityToIssue된 엔티티
5
+ * - issue의 relevantFiles 경로로 해당 파일의 엔티티를 자동 검색
6
+ */
7
+ export declare function getEntitiesForIssue(issueId: string, relevantFiles?: string[]): CodeEntity[];
8
+ //# sourceMappingURL=issueBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issueBridge.d.ts","sourceRoot":"","sources":["../../src/registry/issueBridge.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,aAAa,CAAC,EAAE,MAAM,EAAE,GACvB,UAAU,EAAE,CAoBd"}
@@ -0,0 +1,30 @@
1
+ // ============================================
2
+ // OpenSwarm - Registry ↔ Issue Bridge
3
+ // Created: 2026-04-10
4
+ // Purpose: 코드 엔티티와 이슈 간 연결 헬퍼
5
+ // ============================================
6
+ import { getRegistryStore } from './sqliteStore.js';
7
+ /**
8
+ * 이슈에 연결된 코드 엔티티 조회
9
+ * - 명시적으로 linkEntityToIssue된 엔티티
10
+ * - issue의 relevantFiles 경로로 해당 파일의 엔티티를 자동 검색
11
+ */
12
+ export function getEntitiesForIssue(issueId, relevantFiles) {
13
+ const store = getRegistryStore();
14
+ const entityMap = new Map();
15
+ // 1. 명시적 연결된 엔티티 (정식 store 메서드 사용)
16
+ for (const entity of store.getEntitiesByIssueId(issueId)) {
17
+ entityMap.set(entity.id, entity);
18
+ }
19
+ // 2. relevantFiles 경로로 암시적 연결
20
+ if (relevantFiles) {
21
+ for (const filePath of relevantFiles) {
22
+ const brief = store.fileBrief(filePath);
23
+ for (const entity of brief.entities) {
24
+ entityMap.set(entity.id, entity);
25
+ }
26
+ }
27
+ }
28
+ return Array.from(entityMap.values());
29
+ }
30
+ //# sourceMappingURL=issueBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issueBridge.js","sourceRoot":"","sources":["../../src/registry/issueBridge.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,sCAAsC;AACtC,sBAAsB;AACtB,8BAA8B;AAC9B,+CAA+C;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAAe,EACf,aAAwB;IAExB,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC;IACjC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAsB,CAAC;IAEhD,mCAAmC;IACnC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,8BAA8B;IAC9B,IAAI,aAAa,EAAE,CAAC;QAClB,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACxC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACpC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;AACxC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { CodeEntity, EntityWarning } from './schema.js';
2
+ /**
3
+ * 엔티티 deprecated 시 장기기억 저장
4
+ * - "X 함수는 Y 이유로 deprecated됨" 기억 저장
5
+ * - 향후 에이전트가 해당 함수를 수정하려 할 때 참조
6
+ */
7
+ export declare function onEntityDeprecated(entity: CodeEntity): Promise<void>;
8
+ /**
9
+ * 보안/critical 경고 발생 시 장기기억 저장
10
+ * - critical/error 수준 경고만 기억에 남김
11
+ */
12
+ export declare function onEntityWarningAdded(entity: CodeEntity, warning: EntityWarning): Promise<void>;
13
+ //# sourceMappingURL=memoryBridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoryBridge.d.ts","sourceRoot":"","sources":["../../src/registry/memoryBridge.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE7D;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA4B1E;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,UAAU,EAClB,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,IAAI,CAAC,CA6Bf"}
@@ -0,0 +1,60 @@
1
+ // ============================================
2
+ // OpenSwarm - Registry ↔ Memory Bridge
3
+ // Created: 2026-04-10
4
+ // Purpose: 코드 엔티티 이벤트를 장기 기억으로 연동
5
+ // Dependencies: memoryCore
6
+ // ============================================
7
+ import { saveMemory } from '../memory/memoryCore.js';
8
+ /**
9
+ * 엔티티 deprecated 시 장기기억 저장
10
+ * - "X 함수는 Y 이유로 deprecated됨" 기억 저장
11
+ * - 향후 에이전트가 해당 함수를 수정하려 할 때 참조
12
+ */
13
+ export async function onEntityDeprecated(entity) {
14
+ const reason = entity.deprecatedReason ?? '사유 미기재';
15
+ const content = [
16
+ `[코드 레지스트리] ${entity.kind} "${entity.name}" deprecated`,
17
+ `파일: ${entity.filePath}`,
18
+ `정규명: ${entity.qualifiedName}`,
19
+ `사유: ${reason}`,
20
+ entity.notes ? `메모: ${entity.notes}` : null,
21
+ ].filter(Boolean).join('\n');
22
+ await saveMemory('decision', entity.projectId, `${entity.kind} ${entity.name} deprecated`, content, {
23
+ importance: 7,
24
+ confidence: 9,
25
+ derivedFrom: `registry:${entity.id}`,
26
+ metadata: {
27
+ registryEntityId: entity.id,
28
+ qualifiedName: entity.qualifiedName,
29
+ filePath: entity.filePath,
30
+ },
31
+ });
32
+ console.log(`[RegistryMemory] ${entity.qualifiedName} deprecated → 기억 저장`);
33
+ }
34
+ /**
35
+ * 보안/critical 경고 발생 시 장기기억 저장
36
+ * - critical/error 수준 경고만 기억에 남김
37
+ */
38
+ export async function onEntityWarningAdded(entity, warning) {
39
+ if (warning.severity !== 'critical' && warning.severity !== 'error')
40
+ return;
41
+ const content = [
42
+ `[코드 레지스트리] ${warning.severity} 경고: ${entity.kind} "${entity.name}"`,
43
+ `카테고리: ${warning.category}`,
44
+ `메시지: ${warning.message}`,
45
+ `파일: ${entity.filePath}`,
46
+ `정규명: ${entity.qualifiedName}`,
47
+ ].join('\n');
48
+ await saveMemory('constraint', entity.projectId, `${warning.category} ${warning.severity}: ${entity.name}`, content, {
49
+ importance: warning.severity === 'critical' ? 9 : 7,
50
+ confidence: 8,
51
+ derivedFrom: `registry:${entity.id}:warning:${warning.id}`,
52
+ metadata: {
53
+ registryEntityId: entity.id,
54
+ warningId: warning.id,
55
+ warningCategory: warning.category,
56
+ },
57
+ });
58
+ console.log(`[RegistryMemory] ${entity.qualifiedName} ${warning.severity} 경고 → 기억 저장`);
59
+ }
60
+ //# sourceMappingURL=memoryBridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memoryBridge.js","sourceRoot":"","sources":["../../src/registry/memoryBridge.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,uCAAuC;AACvC,sBAAsB;AACtB,kCAAkC;AAClC,2BAA2B;AAC3B,+CAA+C;AAE/C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAkB;IACzD,MAAM,MAAM,GAAG,MAAM,CAAC,gBAAgB,IAAI,QAAQ,CAAC;IACnD,MAAM,OAAO,GAAG;QACd,cAAc,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,cAAc;QACvD,OAAO,MAAM,CAAC,QAAQ,EAAE;QACxB,QAAQ,MAAM,CAAC,aAAa,EAAE;QAC9B,OAAO,MAAM,EAAE;QACf,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI;KAC5C,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE7B,MAAM,UAAU,CACd,UAAU,EACV,MAAM,CAAC,SAAS,EAChB,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,aAAa,EAC1C,OAAO,EACP;QACE,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,YAAY,MAAM,CAAC,EAAE,EAAE;QACpC,QAAQ,EAAE;YACR,gBAAgB,EAAE,MAAM,CAAC,EAAE;YAC3B,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B;KACF,CACF,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,aAAa,qBAAqB,CAAC,CAAC;AAC7E,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAkB,EAClB,OAAsB;IAEtB,IAAI,OAAO,CAAC,QAAQ,KAAK,UAAU,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO;IAE5E,MAAM,OAAO,GAAG;QACd,cAAc,OAAO,CAAC,QAAQ,QAAQ,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,GAAG;QACpE,SAAS,OAAO,CAAC,QAAQ,EAAE;QAC3B,QAAQ,OAAO,CAAC,OAAO,EAAE;QACzB,OAAO,MAAM,CAAC,QAAQ,EAAE;QACxB,QAAQ,MAAM,CAAC,aAAa,EAAE;KAC/B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,UAAU,CACd,YAAY,EACZ,MAAM,CAAC,SAAS,EAChB,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,CAAC,IAAI,EAAE,EACzD,OAAO,EACP;QACE,UAAU,EAAE,OAAO,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,YAAY,MAAM,CAAC,EAAE,YAAY,OAAO,CAAC,EAAE,EAAE;QAC1D,QAAQ,EAAE;YACR,gBAAgB,EAAE,MAAM,CAAC,EAAE;YAC3B,SAAS,EAAE,OAAO,CAAC,EAAE;YACrB,eAAe,EAAE,OAAO,CAAC,QAAQ;SAClC;KACF,CACF,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,aAAa,IAAI,OAAO,CAAC,QAAQ,aAAa,CAAC,CAAC;AACzF,CAAC"}