@intrect/openswarm 0.2.2 → 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/README.md +236 -331
- package/config.example.yaml +36 -13
- package/dist/adapters/base.d.ts.map +1 -1
- package/dist/adapters/base.js +4 -0
- package/dist/adapters/base.js.map +1 -1
- package/dist/adapters/cryptoQuantAdapter.js +1 -1
- package/dist/adapters/cryptoQuantAdapter.js.map +1 -1
- package/dist/adapters/gpt.d.ts +15 -0
- package/dist/adapters/gpt.d.ts.map +1 -0
- package/dist/adapters/gpt.js +274 -0
- package/dist/adapters/gpt.js.map +1 -0
- package/dist/adapters/index.d.ts +2 -0
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +6 -0
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/local.d.ts +22 -0
- package/dist/adapters/local.d.ts.map +1 -0
- package/dist/adapters/local.js +277 -0
- package/dist/adapters/local.js.map +1 -0
- package/dist/adapters/types.d.ts +6 -1
- package/dist/adapters/types.d.ts.map +1 -1
- package/dist/agents/pairPipeline.d.ts.map +1 -1
- package/dist/agents/pairPipeline.js +21 -6
- package/dist/agents/pairPipeline.js.map +1 -1
- package/dist/agents/pipelineGuards.d.ts.map +1 -1
- package/dist/agents/pipelineGuards.js +84 -2
- package/dist/agents/pipelineGuards.js.map +1 -1
- package/dist/auth/index.d.ts +3 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +6 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/oauthPkce.d.ts +21 -0
- package/dist/auth/oauthPkce.d.ts.map +1 -0
- package/dist/auth/oauthPkce.js +212 -0
- package/dist/auth/oauthPkce.js.map +1 -0
- package/dist/auth/oauthStore.d.ts +24 -0
- package/dist/auth/oauthStore.d.ts.map +1 -0
- package/dist/auth/oauthStore.js +96 -0
- package/dist/auth/oauthStore.js.map +1 -0
- package/dist/automation/autonomousRunner.d.ts +5 -5
- package/dist/automation/runnerTypes.d.ts +1 -1
- package/dist/automation/runnerTypes.d.ts.map +1 -1
- package/dist/cli/authHandler.d.ts +16 -0
- package/dist/cli/authHandler.d.ts.map +1 -0
- package/dist/cli/authHandler.js +93 -0
- package/dist/cli/authHandler.js.map +1 -0
- package/dist/cli/checkHandler.d.ts +25 -0
- package/dist/cli/checkHandler.d.ts.map +1 -0
- package/dist/cli/checkHandler.js +465 -0
- package/dist/cli/checkHandler.js.map +1 -0
- package/dist/cli.js +64 -0
- package/dist/cli.js.map +1 -1
- package/dist/core/config.d.ts +17 -4
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +21 -8
- package/dist/core/config.js.map +1 -1
- package/dist/core/service.d.ts.map +1 -1
- package/dist/core/service.js +18 -8
- package/dist/core/service.js.map +1 -1
- package/dist/core/types.d.ts +4 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/issues/graphql/resolvers.d.ts +252 -0
- package/dist/issues/graphql/resolvers.d.ts.map +1 -0
- package/dist/issues/graphql/resolvers.js +88 -0
- package/dist/issues/graphql/resolvers.js.map +1 -0
- package/dist/issues/graphql/server.d.ts +13 -0
- package/dist/issues/graphql/server.d.ts.map +1 -0
- package/dist/issues/graphql/server.js +56 -0
- package/dist/issues/graphql/server.js.map +1 -0
- package/dist/issues/graphql/typeDefs.d.ts +2 -0
- package/dist/issues/graphql/typeDefs.d.ts.map +1 -0
- package/dist/issues/graphql/typeDefs.js +251 -0
- package/dist/issues/graphql/typeDefs.js.map +1 -0
- package/dist/issues/index.d.ts +8 -0
- package/dist/issues/index.d.ts.map +1 -0
- package/dist/issues/index.js +11 -0
- package/dist/issues/index.js.map +1 -0
- package/dist/issues/issueBoardHtml.d.ts +2 -0
- package/dist/issues/issueBoardHtml.d.ts.map +1 -0
- package/dist/issues/issueBoardHtml.js +677 -0
- package/dist/issues/issueBoardHtml.js.map +1 -0
- package/dist/issues/linearBridge.d.ts +27 -0
- package/dist/issues/linearBridge.d.ts.map +1 -0
- package/dist/issues/linearBridge.js +211 -0
- package/dist/issues/linearBridge.js.map +1 -0
- package/dist/issues/memoryBridge.d.ts +35 -0
- package/dist/issues/memoryBridge.d.ts.map +1 -0
- package/dist/issues/memoryBridge.js +184 -0
- package/dist/issues/memoryBridge.js.map +1 -0
- package/dist/issues/schema.d.ts +162 -0
- package/dist/issues/schema.d.ts.map +1 -0
- package/dist/issues/schema.js +121 -0
- package/dist/issues/schema.js.map +1 -0
- package/dist/issues/sqliteStore.d.ts +90 -0
- package/dist/issues/sqliteStore.d.ts.map +1 -0
- package/dist/issues/sqliteStore.js +488 -0
- package/dist/issues/sqliteStore.js.map +1 -0
- package/dist/knowledge/index.d.ts.map +1 -1
- package/dist/knowledge/index.js +9 -3
- package/dist/knowledge/index.js.map +1 -1
- package/dist/linear/linear.d.ts +4 -0
- package/dist/linear/linear.d.ts.map +1 -1
- package/dist/linear/linear.js +27 -0
- package/dist/linear/linear.js.map +1 -1
- package/dist/registry/bsDetector.d.ts +24 -0
- package/dist/registry/bsDetector.d.ts.map +1 -0
- package/dist/registry/bsDetector.js +276 -0
- package/dist/registry/bsDetector.js.map +1 -0
- package/dist/registry/entityScanner.d.ts +36 -0
- package/dist/registry/entityScanner.d.ts.map +1 -0
- package/dist/registry/entityScanner.js +693 -0
- package/dist/registry/entityScanner.js.map +1 -0
- package/dist/registry/graphql/resolvers.d.ts +778 -0
- package/dist/registry/graphql/resolvers.d.ts.map +1 -0
- package/dist/registry/graphql/resolvers.js +127 -0
- package/dist/registry/graphql/resolvers.js.map +1 -0
- package/dist/registry/graphql/typeDefs.d.ts +2 -0
- package/dist/registry/graphql/typeDefs.d.ts.map +1 -0
- package/dist/registry/graphql/typeDefs.js +276 -0
- package/dist/registry/graphql/typeDefs.js.map +1 -0
- package/dist/registry/index.d.ts +12 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +18 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/issueBridge.d.ts +8 -0
- package/dist/registry/issueBridge.d.ts.map +1 -0
- package/dist/registry/issueBridge.js +30 -0
- package/dist/registry/issueBridge.js.map +1 -0
- package/dist/registry/memoryBridge.d.ts +13 -0
- package/dist/registry/memoryBridge.d.ts.map +1 -0
- package/dist/registry/memoryBridge.js +60 -0
- package/dist/registry/memoryBridge.js.map +1 -0
- package/dist/registry/schema.d.ts +307 -0
- package/dist/registry/schema.d.ts.map +1 -0
- package/dist/registry/schema.js +139 -0
- package/dist/registry/schema.js.map +1 -0
- package/dist/registry/sqliteStore.d.ts +101 -0
- package/dist/registry/sqliteStore.d.ts.map +1 -0
- package/dist/registry/sqliteStore.js +688 -0
- package/dist/registry/sqliteStore.js.map +1 -0
- package/dist/support/chatBackend.d.ts.map +1 -1
- package/dist/support/chatBackend.js +35 -4
- package/dist/support/chatBackend.js.map +1 -1
- package/dist/support/chatTui.d.ts.map +1 -1
- package/dist/support/chatTui.js +109 -3
- package/dist/support/chatTui.js.map +1 -1
- package/dist/support/dashboardHtml.d.ts +1 -1
- package/dist/support/dashboardHtml.d.ts.map +1 -1
- package/dist/support/dashboardHtml.js +1 -0
- package/dist/support/dashboardHtml.js.map +1 -1
- package/dist/support/web.d.ts.map +1 -1
- package/dist/support/web.js +16 -3
- package/dist/support/web.js.map +1 -1
- package/package.json +8 -2
- 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"}
|