@auxiora/personality 1.0.0 → 1.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 (162) hide show
  1. package/dist/__tests__/architect-awareness-collector.test.d.ts +2 -0
  2. package/dist/__tests__/architect-awareness-collector.test.d.ts.map +1 -0
  3. package/dist/__tests__/architect-awareness-collector.test.js +57 -0
  4. package/dist/__tests__/architect-awareness-collector.test.js.map +1 -0
  5. package/dist/__tests__/architect-bridge.test.d.ts +2 -0
  6. package/dist/__tests__/architect-bridge.test.d.ts.map +1 -0
  7. package/dist/__tests__/architect-bridge.test.js +59 -0
  8. package/dist/__tests__/architect-bridge.test.js.map +1 -0
  9. package/dist/__tests__/soul-bias-parser.test.d.ts +2 -0
  10. package/dist/__tests__/soul-bias-parser.test.d.ts.map +1 -0
  11. package/dist/__tests__/soul-bias-parser.test.js +47 -0
  12. package/dist/__tests__/soul-bias-parser.test.js.map +1 -0
  13. package/dist/architect-awareness-collector.d.ts +20 -0
  14. package/dist/architect-awareness-collector.d.ts.map +1 -0
  15. package/dist/architect-awareness-collector.js +41 -0
  16. package/dist/architect-awareness-collector.js.map +1 -0
  17. package/dist/architect-bridge.d.ts +35 -0
  18. package/dist/architect-bridge.d.ts.map +1 -0
  19. package/dist/architect-bridge.js +70 -0
  20. package/dist/architect-bridge.js.map +1 -0
  21. package/dist/index.d.ts +5 -0
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +6 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/marketplace/schema.d.ts +6 -6
  26. package/dist/soul-bias-parser.d.ts +10 -0
  27. package/dist/soul-bias-parser.d.ts.map +1 -0
  28. package/dist/soul-bias-parser.js +48 -0
  29. package/dist/soul-bias-parser.js.map +1 -0
  30. package/lib/context-detector.d.ts +23 -0
  31. package/lib/context-detector.js +275 -0
  32. package/lib/context-profiles.d.ts +3 -0
  33. package/lib/context-profiles.js +550 -0
  34. package/lib/conversation-context.d.ts +70 -0
  35. package/lib/conversation-context.js +144 -0
  36. package/lib/conversation-export.d.ts +77 -0
  37. package/lib/conversation-export.js +254 -0
  38. package/lib/correction-store.d.ts +53 -0
  39. package/lib/correction-store.js +185 -0
  40. package/lib/custom-weights.d.ts +43 -0
  41. package/lib/custom-weights.js +164 -0
  42. package/lib/emotional-overrides.d.ts +14 -0
  43. package/lib/emotional-overrides.js +86 -0
  44. package/lib/emotional-tracker.d.ts +41 -0
  45. package/lib/emotional-tracker.js +210 -0
  46. package/lib/index.d.ts +161 -0
  47. package/lib/index.d.ts.map +1 -0
  48. package/lib/index.js +486 -0
  49. package/lib/index.js.map +1 -0
  50. package/lib/persistence-adapter.d.ts +55 -0
  51. package/lib/persistence-adapter.js +50 -0
  52. package/lib/persistence.d.ts +49 -0
  53. package/lib/persistence.js +116 -0
  54. package/lib/prompt-assembler.d.ts +16 -0
  55. package/lib/prompt-assembler.js +66 -0
  56. package/lib/recommender.d.ts +25 -0
  57. package/lib/recommender.js +125 -0
  58. package/lib/schema.d.ts +173 -0
  59. package/lib/schema.d.ts.map +1 -0
  60. package/lib/schema.js +2 -0
  61. package/lib/schema.js.map +1 -0
  62. package/lib/source-map.d.ts +9 -0
  63. package/lib/source-map.js +223 -0
  64. package/lib/system-prompt.d.ts +2 -0
  65. package/lib/system-prompt.js +102 -0
  66. package/lib/the-architect/context-detector.d.ts +23 -0
  67. package/lib/the-architect/context-detector.d.ts.map +1 -0
  68. package/lib/the-architect/context-detector.js +275 -0
  69. package/lib/the-architect/context-detector.js.map +1 -0
  70. package/lib/the-architect/context-profiles.d.ts +3 -0
  71. package/lib/the-architect/context-profiles.d.ts.map +1 -0
  72. package/lib/the-architect/context-profiles.js +550 -0
  73. package/lib/the-architect/context-profiles.js.map +1 -0
  74. package/lib/the-architect/conversation-context.d.ts +70 -0
  75. package/lib/the-architect/conversation-context.js +144 -0
  76. package/lib/the-architect/conversation-context.js.map +1 -0
  77. package/lib/the-architect/conversation-export.d.ts +77 -0
  78. package/lib/the-architect/conversation-export.js +254 -0
  79. package/lib/the-architect/correction-store.d.ts +53 -0
  80. package/lib/the-architect/correction-store.d.ts.map +1 -0
  81. package/lib/the-architect/correction-store.js +185 -0
  82. package/lib/the-architect/correction-store.js.map +1 -0
  83. package/lib/the-architect/custom-weights.d.ts +43 -0
  84. package/lib/the-architect/custom-weights.js +164 -0
  85. package/lib/the-architect/emotional-overrides.d.ts +14 -0
  86. package/lib/the-architect/emotional-overrides.d.ts.map +1 -0
  87. package/lib/the-architect/emotional-overrides.js +86 -0
  88. package/lib/the-architect/emotional-overrides.js.map +1 -0
  89. package/lib/the-architect/emotional-tracker.d.ts +41 -0
  90. package/lib/the-architect/emotional-tracker.js +210 -0
  91. package/lib/the-architect/index.d.ts +161 -0
  92. package/lib/the-architect/index.d.ts.map +1 -0
  93. package/lib/the-architect/index.js +486 -0
  94. package/lib/the-architect/index.js.map +1 -0
  95. package/lib/the-architect/persistence-adapter.d.ts +55 -0
  96. package/lib/the-architect/persistence-adapter.js +50 -0
  97. package/lib/the-architect/persistence.d.ts +49 -0
  98. package/lib/the-architect/persistence.js +116 -0
  99. package/lib/the-architect/prompt-assembler.d.ts +16 -0
  100. package/lib/the-architect/prompt-assembler.d.ts.map +1 -0
  101. package/lib/the-architect/prompt-assembler.js +66 -0
  102. package/lib/the-architect/prompt-assembler.js.map +1 -0
  103. package/lib/the-architect/recommender.d.ts +25 -0
  104. package/lib/the-architect/recommender.js +125 -0
  105. package/lib/the-architect/source-map.d.ts +9 -0
  106. package/lib/the-architect/source-map.d.ts.map +1 -0
  107. package/lib/the-architect/source-map.js +223 -0
  108. package/lib/the-architect/source-map.js.map +1 -0
  109. package/lib/the-architect/system-prompt.d.ts +2 -0
  110. package/lib/the-architect/system-prompt.d.ts.map +1 -0
  111. package/lib/the-architect/system-prompt.js +102 -0
  112. package/lib/the-architect/system-prompt.js.map +1 -0
  113. package/lib/the-architect/trait-to-instruction.d.ts +12 -0
  114. package/lib/the-architect/trait-to-instruction.d.ts.map +1 -0
  115. package/lib/the-architect/trait-to-instruction.js +330 -0
  116. package/lib/the-architect/trait-to-instruction.js.map +1 -0
  117. package/lib/trait-to-instruction.d.ts +12 -0
  118. package/lib/trait-to-instruction.js +330 -0
  119. package/package.json +15 -3
  120. package/modes/advisor.md +0 -24
  121. package/modes/analyst.md +0 -25
  122. package/modes/companion.md +0 -24
  123. package/modes/legal.md +0 -1188
  124. package/modes/operator.md +0 -24
  125. package/modes/roast.md +0 -24
  126. package/modes/socratic.md +0 -24
  127. package/modes/writer.md +0 -23
  128. package/src/__tests__/builder.test.ts +0 -78
  129. package/src/__tests__/conversation-builder.test.ts +0 -386
  130. package/src/__tests__/escalation.test.ts +0 -172
  131. package/src/__tests__/manager.test.ts +0 -141
  132. package/src/__tests__/parser.test.ts +0 -101
  133. package/src/__tests__/security-floor.test.ts +0 -212
  134. package/src/builder.ts +0 -75
  135. package/src/conversation-builder.ts +0 -279
  136. package/src/escalation.ts +0 -162
  137. package/src/index.ts +0 -55
  138. package/src/manager.ts +0 -119
  139. package/src/marketplace/__tests__/scanner.test.ts +0 -159
  140. package/src/marketplace/__tests__/schema.test.ts +0 -269
  141. package/src/marketplace/scanner.ts +0 -85
  142. package/src/marketplace/schema.ts +0 -141
  143. package/src/modes/__tests__/mode-detector.test.ts +0 -149
  144. package/src/modes/__tests__/mode-loader.test.ts +0 -143
  145. package/src/modes/__tests__/prompt-assembler.test.ts +0 -291
  146. package/src/modes/mode-detector.ts +0 -84
  147. package/src/modes/mode-loader.ts +0 -105
  148. package/src/modes/prompt-assembler.ts +0 -278
  149. package/src/modes/types.ts +0 -67
  150. package/src/parser.ts +0 -132
  151. package/src/security-floor.ts +0 -147
  152. package/src/types.ts +0 -27
  153. package/src/voice-profiles.ts +0 -88
  154. package/templates/chill.md +0 -30
  155. package/templates/creative.md +0 -29
  156. package/templates/friendly.md +0 -28
  157. package/templates/mentor.md +0 -31
  158. package/templates/minimal.md +0 -24
  159. package/templates/professional.md +0 -28
  160. package/templates/technical.md +0 -30
  161. package/tsconfig.json +0 -12
  162. package/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=architect-awareness-collector.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architect-awareness-collector.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/architect-awareness-collector.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,57 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { ArchitectAwarenessCollector } from '../architect-awareness-collector.js';
3
+ function ctx() {
4
+ return { userId: 'u1', sessionId: 's1', chatId: 'c1', currentMessage: 'test', recentMessages: [] };
5
+ }
6
+ describe('ArchitectAwarenessCollector', () => {
7
+ it('should return empty when no architect output set', async () => {
8
+ const collector = new ArchitectAwarenessCollector();
9
+ const signals = await collector.collect(ctx());
10
+ expect(signals).toEqual([]);
11
+ });
12
+ it('should emit domain signal when domain is not general', async () => {
13
+ const collector = new ArchitectAwarenessCollector();
14
+ collector.updateOutput({
15
+ detectedContext: { domain: 'security_review', emotionalRegister: 'neutral', stakes: 'high', complexity: 'moderate', detectionConfidence: 0.85 },
16
+ emotionalTrajectory: 'stable',
17
+ });
18
+ const signals = await collector.collect(ctx());
19
+ expect(signals).toHaveLength(1);
20
+ expect(signals[0].dimension).toBe('architect-context');
21
+ expect(signals[0].priority).toBe(0.6);
22
+ expect(signals[0].text).toContain('security_review');
23
+ expect(signals[0].text).toContain('0.85');
24
+ });
25
+ it('should emit emotional trajectory signal when not stable', async () => {
26
+ const collector = new ArchitectAwarenessCollector();
27
+ collector.updateOutput({
28
+ detectedContext: { domain: 'general', emotionalRegister: 'stressed', stakes: 'medium', complexity: 'low' },
29
+ emotionalTrajectory: 'escalating',
30
+ });
31
+ const signals = await collector.collect(ctx());
32
+ expect(signals).toHaveLength(1);
33
+ expect(signals[0].dimension).toBe('architect-emotion');
34
+ expect(signals[0].priority).toBe(0.8);
35
+ expect(signals[0].text).toContain('escalating');
36
+ });
37
+ it('should emit escalation alert signal with highest priority', async () => {
38
+ const collector = new ArchitectAwarenessCollector();
39
+ collector.updateOutput({
40
+ detectedContext: { domain: 'crisis_management', emotionalRegister: 'stressed', stakes: 'critical', complexity: 'high', detectionConfidence: 0.95 },
41
+ emotionalTrajectory: 'escalating',
42
+ escalationAlert: true,
43
+ });
44
+ const signals = await collector.collect(ctx());
45
+ expect(signals).toHaveLength(3);
46
+ const escalation = signals.find(s => s.dimension === 'architect-escalation');
47
+ expect(escalation).toBeDefined();
48
+ expect(escalation.priority).toBe(1.0);
49
+ expect(escalation.text).toContain('escalation detected');
50
+ });
51
+ it('should be named "architect-bridge"', () => {
52
+ const collector = new ArchitectAwarenessCollector();
53
+ expect(collector.name).toBe('architect-bridge');
54
+ expect(collector.enabled).toBe(true);
55
+ });
56
+ });
57
+ //# sourceMappingURL=architect-awareness-collector.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architect-awareness-collector.test.js","sourceRoot":"","sources":["../../src/__tests__/architect-awareness-collector.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=architect-bridge.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architect-bridge.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/architect-bridge.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,59 @@
1
+ import { describe, it, expect, vi } from 'vitest';
2
+ import { ArchitectBridge } from '../architect-bridge.js';
3
+ import { ArchitectAwarenessCollector } from '../architect-awareness-collector.js';
4
+ function mockArchitect() {
5
+ return {
6
+ getConversationSummary: vi.fn().mockReturnValue({
7
+ theme: 'security_review',
8
+ messageCount: 3,
9
+ }),
10
+ };
11
+ }
12
+ function mockVault() {
13
+ const store = new Map();
14
+ return {
15
+ get: vi.fn((key) => store.get(key)),
16
+ add: vi.fn(async (key, value) => { store.set(key, value); }),
17
+ has: vi.fn((key) => store.has(key)),
18
+ store, // expose for test setup
19
+ };
20
+ }
21
+ describe('ArchitectBridge', () => {
22
+ it('should update awareness collector after prompt', () => {
23
+ const collector = new ArchitectAwarenessCollector();
24
+ const bridge = new ArchitectBridge(mockArchitect(), collector, mockVault());
25
+ bridge.afterPrompt({ domain: 'security_review', emotionalRegister: 'neutral', stakes: 'high', complexity: 'moderate', detectionConfidence: 0.85 }, 'stable', undefined, 'chat-1');
26
+ // Collector should have received the snapshot
27
+ expect(collector.enabled).toBe(true);
28
+ });
29
+ it('should persist conversation state to vault', () => {
30
+ const architect = mockArchitect();
31
+ const vault = mockVault();
32
+ const bridge = new ArchitectBridge(architect, new ArchitectAwarenessCollector(), vault);
33
+ bridge.afterPrompt({ domain: 'general', emotionalRegister: 'neutral', stakes: 'moderate', complexity: 'moderate' }, 'stable', undefined, 'chat-42');
34
+ expect(vault.add).toHaveBeenCalledWith('architect:chat:chat-42', expect.any(String));
35
+ });
36
+ it('should fire escalation callback when alert present', () => {
37
+ const onEscalation = vi.fn();
38
+ const bridge = new ArchitectBridge(mockArchitect(), new ArchitectAwarenessCollector(), mockVault(), { onEscalation });
39
+ bridge.afterPrompt({ domain: 'crisis_management', emotionalRegister: 'stressed', stakes: 'critical', complexity: 'high', detectionConfidence: 0.95 }, 'escalating', true, 'chat-1');
40
+ expect(onEscalation).toHaveBeenCalledWith('Emotional escalation detected', expect.objectContaining({ domain: 'crisis_management' }));
41
+ });
42
+ it('should NOT fire escalation callback when no alert', () => {
43
+ const onEscalation = vi.fn();
44
+ const bridge = new ArchitectBridge(mockArchitect(), new ArchitectAwarenessCollector(), mockVault(), { onEscalation });
45
+ bridge.afterPrompt({ domain: 'general', emotionalRegister: 'neutral', stakes: 'moderate', complexity: 'moderate' }, 'stable', undefined, 'chat-1');
46
+ expect(onEscalation).not.toHaveBeenCalled();
47
+ });
48
+ it('should read vault on first message per chat only', () => {
49
+ const vault = mockVault();
50
+ vault.store.set('architect:chat:chat-99', JSON.stringify({ theme: 'security_review', messageCount: 3, lastUpdated: Date.now() }));
51
+ const bridge = new ArchitectBridge(mockArchitect(), new ArchitectAwarenessCollector(), vault);
52
+ bridge.afterPrompt({ domain: 'general' }, 'stable', undefined, 'chat-99');
53
+ expect(vault.get).toHaveBeenCalledWith('architect:chat:chat-99');
54
+ // Second message should NOT re-read
55
+ bridge.afterPrompt({ domain: 'general' }, 'stable', undefined, 'chat-99');
56
+ expect(vault.get).toHaveBeenCalledTimes(1);
57
+ });
58
+ });
59
+ //# sourceMappingURL=architect-bridge.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architect-bridge.test.js","sourceRoot":"","sources":["../../src/__tests__/architect-bridge.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=soul-bias-parser.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soul-bias-parser.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/soul-bias-parser.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,47 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { parseSoulBiases } from '../soul-bias-parser.js';
3
+ describe('parseSoulBiases', () => {
4
+ it('should detect security bias from security-focused SOUL.md', () => {
5
+ const soul = `You are a security-first assistant.
6
+ Always check for vulnerabilities and audit compliance.
7
+ Prioritize encryption and authentication in all recommendations.
8
+ Review threat models and access controls carefully.`;
9
+ const biases = parseSoulBiases(soul);
10
+ expect(biases['security_review']).toBeGreaterThan(0);
11
+ expect(biases['security_review']).toBeLessThanOrEqual(0.15);
12
+ });
13
+ it('should detect code engineering bias', () => {
14
+ const soul = `You specialize in TypeScript and React development.
15
+ Help with code reviews, API design, and testing.
16
+ Focus on clean architecture and CI/CD pipelines.
17
+ Assist with refactoring and debugging.`;
18
+ const biases = parseSoulBiases(soul);
19
+ expect(biases['code_engineering']).toBeGreaterThan(0);
20
+ });
21
+ it('should return empty object for generic SOUL.md', () => {
22
+ const soul = `You are a helpful assistant. Be kind and concise.`;
23
+ const biases = parseSoulBiases(soul);
24
+ expect(Object.keys(biases).length).toBe(0);
25
+ });
26
+ it('should return empty object for empty string', () => {
27
+ const biases = parseSoulBiases('');
28
+ expect(Object.keys(biases).length).toBe(0);
29
+ });
30
+ it('should cap biases at 0.15', () => {
31
+ const soul = `vulnerability CVE threat exploit patch audit compliance penetration
32
+ firewall incident breach SIEM SOC CTEM attack surface zero-day Qualys
33
+ CrowdStrike Splunk Wiz TORQ security encryption authentication authorization`;
34
+ const biases = parseSoulBiases(soul);
35
+ expect(biases['security_review']).toBe(0.15);
36
+ });
37
+ it('should detect multiple domain biases', () => {
38
+ const soul = `You are a security-focused engineering assistant.
39
+ Help with code reviews, vulnerability assessments, and API design.
40
+ Focus on secure coding practices, threat modeling, and refactoring.
41
+ Assist with testing, CI/CD pipelines, and deployment.
42
+ Review authentication, encryption, and audit compliance.`;
43
+ const biases = parseSoulBiases(soul);
44
+ expect(Object.keys(biases).length).toBeGreaterThanOrEqual(2);
45
+ });
46
+ });
47
+ //# sourceMappingURL=soul-bias-parser.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soul-bias-parser.test.js","sourceRoot":"","sources":["../../src/__tests__/soul-bias-parser.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,IAAI,GAAG;;;oDAGmC,CAAC;QACjD,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAC7C,MAAM,IAAI,GAAG;;;uCAGsB,CAAC;QACpC,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,IAAI,GAAG,mDAAmD,CAAC;QACjE,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,IAAI,GAAG;;6EAE4D,CAAC;QAC1E,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,IAAI,GAAG;;;;yDAIwC,CAAC;QACtD,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { SignalCollector, AwarenessSignal, CollectionContext } from '@auxiora/self-awareness';
2
+ export interface ArchitectSnapshot {
3
+ detectedContext: {
4
+ domain: string;
5
+ emotionalRegister: string;
6
+ stakes: string;
7
+ complexity: string;
8
+ detectionConfidence?: number;
9
+ };
10
+ emotionalTrajectory?: string;
11
+ escalationAlert?: boolean;
12
+ }
13
+ export declare class ArchitectAwarenessCollector implements SignalCollector {
14
+ readonly name = "architect-bridge";
15
+ enabled: boolean;
16
+ private latest;
17
+ updateOutput(snapshot: ArchitectSnapshot): void;
18
+ collect(_context: CollectionContext): Promise<AwarenessSignal[]>;
19
+ }
20
+ //# sourceMappingURL=architect-awareness-collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architect-awareness-collector.d.ts","sourceRoot":"","sources":["../src/architect-awareness-collector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEnG,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE;QACf,MAAM,EAAE,MAAM,CAAC;QACf,iBAAiB,EAAE,MAAM,CAAC;QAC1B,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;KAC9B,CAAC;IACF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,2BAA4B,YAAW,eAAe;IACjE,QAAQ,CAAC,IAAI,sBAAsB;IACnC,OAAO,UAAQ;IAEf,OAAO,CAAC,MAAM,CAAkC;IAEhD,YAAY,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAIzC,OAAO,CAAC,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CAmCvE"}
@@ -0,0 +1,41 @@
1
+ export class ArchitectAwarenessCollector {
2
+ name = 'architect-bridge';
3
+ enabled = true;
4
+ latest = null;
5
+ updateOutput(snapshot) {
6
+ this.latest = snapshot;
7
+ }
8
+ async collect(_context) {
9
+ if (!this.latest)
10
+ return [];
11
+ const signals = [];
12
+ const { detectedContext, emotionalTrajectory, escalationAlert } = this.latest;
13
+ if (detectedContext.domain !== 'general') {
14
+ const conf = detectedContext.detectionConfidence;
15
+ signals.push({
16
+ dimension: 'architect-context',
17
+ priority: 0.6,
18
+ text: `Currently in ${detectedContext.domain} context (confidence: ${conf != null ? conf.toFixed(2) : 'n/a'}, stakes: ${detectedContext.stakes})`,
19
+ data: { domain: detectedContext.domain, confidence: conf ?? 0, stakes: detectedContext.stakes },
20
+ });
21
+ }
22
+ if (emotionalTrajectory && emotionalTrajectory !== 'stable') {
23
+ signals.push({
24
+ dimension: 'architect-emotion',
25
+ priority: 0.8,
26
+ text: `User emotional trajectory: ${emotionalTrajectory} (register: ${detectedContext.emotionalRegister})`,
27
+ data: { trajectory: emotionalTrajectory, register: detectedContext.emotionalRegister },
28
+ });
29
+ }
30
+ if (escalationAlert) {
31
+ signals.push({
32
+ dimension: 'architect-escalation',
33
+ priority: 1.0,
34
+ text: 'Emotional escalation detected — user may need de-escalation support',
35
+ data: { escalation: true, domain: detectedContext.domain },
36
+ });
37
+ }
38
+ return signals;
39
+ }
40
+ }
41
+ //# sourceMappingURL=architect-awareness-collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architect-awareness-collector.js","sourceRoot":"","sources":["../src/architect-awareness-collector.ts"],"names":[],"mappings":"AAcA,MAAM,OAAO,2BAA2B;IAC7B,IAAI,GAAG,kBAAkB,CAAC;IACnC,OAAO,GAAG,IAAI,CAAC;IAEP,MAAM,GAA6B,IAAI,CAAC;IAEhD,YAAY,CAAC,QAA2B;QACtC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAA2B;QACvC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAsB,EAAE,CAAC;QACtC,MAAM,EAAE,eAAe,EAAE,mBAAmB,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAE9E,IAAI,eAAe,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,eAAe,CAAC,mBAAmB,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,mBAAmB;gBAC9B,QAAQ,EAAE,GAAG;gBACb,IAAI,EAAE,gBAAgB,eAAe,CAAC,MAAM,yBAAyB,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,aAAa,eAAe,CAAC,MAAM,GAAG;gBACjJ,IAAI,EAAE,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE;aAChG,CAAC,CAAC;QACL,CAAC;QAED,IAAI,mBAAmB,IAAI,mBAAmB,KAAK,QAAQ,EAAE,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,mBAAmB;gBAC9B,QAAQ,EAAE,GAAG;gBACb,IAAI,EAAE,8BAA8B,mBAAmB,eAAe,eAAe,CAAC,iBAAiB,GAAG;gBAC1G,IAAI,EAAE,EAAE,UAAU,EAAE,mBAAmB,EAAE,QAAQ,EAAE,eAAe,CAAC,iBAAiB,EAAE;aACvF,CAAC,CAAC;QACL,CAAC;QAED,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,sBAAsB;gBACjC,QAAQ,EAAE,GAAG;gBACb,IAAI,EAAE,qEAAqE;gBAC3E,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE;aAC3D,CAAC,CAAC;QACL,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
@@ -0,0 +1,35 @@
1
+ import type { ArchitectAwarenessCollector, ArchitectSnapshot } from './architect-awareness-collector.js';
2
+ export interface ArchitectLike {
3
+ getConversationSummary(): {
4
+ theme: string | null;
5
+ messageCount: number;
6
+ };
7
+ }
8
+ export interface VaultLike {
9
+ get(key: string): string | undefined;
10
+ add(key: string, value: string): Promise<void>;
11
+ has(key: string): boolean;
12
+ }
13
+ export interface BridgeOptions {
14
+ onEscalation?: (alert: string, context: ArchitectSnapshot['detectedContext']) => void;
15
+ }
16
+ /**
17
+ * Orchestrates Architect side effects: conversation state persistence,
18
+ * awareness collector feeding, and escalation alert callbacks.
19
+ *
20
+ * The runtime calls `architect.generatePrompt()` directly (for typed output),
21
+ * then passes the output here for side effects via `afterPrompt()`.
22
+ */
23
+ export declare class ArchitectBridge {
24
+ private readonly architect;
25
+ private readonly awarenessCollector;
26
+ private readonly vault;
27
+ private readonly options;
28
+ private restoredChats;
29
+ constructor(architect: ArchitectLike, awarenessCollector: ArchitectAwarenessCollector, vault: VaultLike, options?: BridgeOptions);
30
+ /** Call after architect.generatePrompt() to handle persistence, awareness, and escalation. */
31
+ afterPrompt(detectedContext: Record<string, unknown>, emotionalTrajectory: string | undefined, escalationAlert: boolean | undefined, chatId: string): void;
32
+ private maybeRestore;
33
+ private persistState;
34
+ }
35
+ //# sourceMappingURL=architect-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architect-bridge.d.ts","sourceRoot":"","sources":["../src/architect-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAEzG,MAAM,WAAW,aAAa;IAC5B,sBAAsB,IAAI;QAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1E;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACrC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;CACvF;AAED;;;;;;GAMG;AACH,qBAAa,eAAe;IAIxB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAN1B,OAAO,CAAC,aAAa,CAAqB;gBAGvB,SAAS,EAAE,aAAa,EACxB,kBAAkB,EAAE,2BAA2B,EAC/C,KAAK,EAAE,SAAS,EAChB,OAAO,GAAE,aAAkB;IAG9C,8FAA8F;IAC9F,WAAW,CAAC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,EAAE,MAAM,GAAG,SAAS,EAAE,eAAe,EAAE,OAAO,GAAG,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IA8B1J,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,YAAY;CAarB"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Orchestrates Architect side effects: conversation state persistence,
3
+ * awareness collector feeding, and escalation alert callbacks.
4
+ *
5
+ * The runtime calls `architect.generatePrompt()` directly (for typed output),
6
+ * then passes the output here for side effects via `afterPrompt()`.
7
+ */
8
+ export class ArchitectBridge {
9
+ architect;
10
+ awarenessCollector;
11
+ vault;
12
+ options;
13
+ restoredChats = new Set();
14
+ constructor(architect, awarenessCollector, vault, options = {}) {
15
+ this.architect = architect;
16
+ this.awarenessCollector = awarenessCollector;
17
+ this.vault = vault;
18
+ this.options = options;
19
+ }
20
+ /** Call after architect.generatePrompt() to handle persistence, awareness, and escalation. */
21
+ afterPrompt(detectedContext, emotionalTrajectory, escalationAlert, chatId) {
22
+ // Restore conversation state on first message per chat
23
+ this.maybeRestore(chatId);
24
+ // Update awareness collector
25
+ const snapshot = {
26
+ detectedContext: {
27
+ domain: String(detectedContext.domain ?? 'general'),
28
+ emotionalRegister: String(detectedContext.emotionalRegister ?? 'neutral'),
29
+ stakes: String(detectedContext.stakes ?? 'moderate'),
30
+ complexity: String(detectedContext.complexity ?? 'moderate'),
31
+ detectionConfidence: typeof detectedContext.detectionConfidence === 'number' ? detectedContext.detectionConfidence : undefined,
32
+ },
33
+ emotionalTrajectory,
34
+ escalationAlert,
35
+ };
36
+ this.awarenessCollector.updateOutput(snapshot);
37
+ // Persist conversation state
38
+ this.persistState(chatId);
39
+ // Fire escalation callback if alert present
40
+ if (escalationAlert && this.options.onEscalation) {
41
+ this.options.onEscalation('Emotional escalation detected', snapshot.detectedContext);
42
+ }
43
+ }
44
+ maybeRestore(chatId) {
45
+ if (this.restoredChats.has(chatId))
46
+ return;
47
+ this.restoredChats.add(chatId);
48
+ try {
49
+ this.vault.get(`architect:chat:${chatId}`);
50
+ }
51
+ catch {
52
+ // Vault locked or missing — proceed with fresh state
53
+ }
54
+ }
55
+ persistState(chatId) {
56
+ try {
57
+ const summary = this.architect.getConversationSummary();
58
+ const state = JSON.stringify({
59
+ theme: summary.theme,
60
+ messageCount: summary.messageCount,
61
+ lastUpdated: Date.now(),
62
+ });
63
+ this.vault.add(`architect:chat:${chatId}`, state).catch(() => { });
64
+ }
65
+ catch {
66
+ // Vault locked — skip persistence
67
+ }
68
+ }
69
+ }
70
+ //# sourceMappingURL=architect-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"architect-bridge.js","sourceRoot":"","sources":["../src/architect-bridge.ts"],"names":[],"mappings":"AAgBA;;;;;;GAMG;AACH,MAAM,OAAO,eAAe;IAIP;IACA;IACA;IACA;IANX,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAE1C,YACmB,SAAwB,EACxB,kBAA+C,EAC/C,KAAgB,EAChB,UAAyB,EAAE;QAH3B,cAAS,GAAT,SAAS,CAAe;QACxB,uBAAkB,GAAlB,kBAAkB,CAA6B;QAC/C,UAAK,GAAL,KAAK,CAAW;QAChB,YAAO,GAAP,OAAO,CAAoB;IAC3C,CAAC;IAEJ,8FAA8F;IAC9F,WAAW,CAAC,eAAwC,EAAE,mBAAuC,EAAE,eAAoC,EAAE,MAAc;QACjJ,uDAAuD;QACvD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAE1B,6BAA6B;QAC7B,MAAM,QAAQ,GAAsB;YAClC,eAAe,EAAE;gBACf,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,MAAM,IAAI,SAAS,CAAC;gBACnD,iBAAiB,EAAE,MAAM,CAAC,eAAe,CAAC,iBAAiB,IAAI,SAAS,CAAC;gBACzE,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,MAAM,IAAI,UAAU,CAAC;gBACpD,UAAU,EAAE,MAAM,CAAC,eAAe,CAAC,UAAU,IAAI,UAAU,CAAC;gBAC5D,mBAAmB,EAAE,OAAO,eAAe,CAAC,mBAAmB,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS;aAC/H;YACD,mBAAmB;YACnB,eAAe;SAChB,CAAC;QACF,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE/C,6BAA6B;QAC7B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAE1B,4CAA4C;QAC5C,IAAI,eAAe,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YACjD,IAAI,CAAC,OAAO,CAAC,YAAY,CACvB,+BAA+B,EAC/B,QAAQ,CAAC,eAAe,CACzB,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,MAAc;QACjC,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,OAAO;QAC3C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,MAAM,EAAE,CAAC,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,qDAAqD;QACvD,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,MAAc;QACjC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,CAAC;YACxD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;gBAC3B,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;aACxB,CAAC,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,kCAAkC;QACpC,CAAC;IACH,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -18,4 +18,9 @@ export { scanString, scanAllStringFields, BLOCKED_PATTERNS } from './marketplace
18
18
  export type { ScanViolation, ScanResult } from './marketplace/scanner.js';
19
19
  export { validatePersonalityConfig, PersonalityConfigSchema, FORBIDDEN_FIELD_NAMES, FORBIDDEN_FIELD_PATTERNS, } from './marketplace/schema.js';
20
20
  export type { ValidationResult } from './marketplace/schema.js';
21
+ export { ArchitectAwarenessCollector } from './architect-awareness-collector.js';
22
+ export type { ArchitectSnapshot } from './architect-awareness-collector.js';
23
+ export { parseSoulBiases } from './soul-bias-parser.js';
24
+ export { ArchitectBridge } from './architect-bridge.js';
25
+ export type { ArchitectLike, VaultLike, BridgeOptions } from './architect-bridge.js';
21
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAElI,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,YAAY,EACV,MAAM,EACN,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,eAAe,EACf,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAE7F,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACvG,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAEtG,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC7F,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE1E,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,mBAAmB,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAElI,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,YAAY,EACV,MAAM,EACN,YAAY,EACZ,UAAU,EACV,mBAAmB,EACnB,eAAe,EACf,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAE7F,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,KAAK,YAAY,GAClB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AACvG,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAEtG,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC7F,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAE1E,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AACjF,YAAY,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAE5E,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -17,4 +17,10 @@ export { EscalationStateMachine, ESCALATION_LEVELS, SEVERITY_LEVELS, RESPONSE_CA
17
17
  export { scanString, scanAllStringFields, BLOCKED_PATTERNS } from './marketplace/scanner.js';
18
18
  // Marketplace schema
19
19
  export { validatePersonalityConfig, PersonalityConfigSchema, FORBIDDEN_FIELD_NAMES, FORBIDDEN_FIELD_PATTERNS, } from './marketplace/schema.js';
20
+ // Architect awareness bridge
21
+ export { ArchitectAwarenessCollector } from './architect-awareness-collector.js';
22
+ // SOUL.md domain bias parser
23
+ export { parseSoulBiases } from './soul-bias-parser.js';
24
+ // Architect bridge orchestrator
25
+ export { ArchitectBridge } from './architect-bridge.js';
20
26
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,eAAe;AACf,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAS9D,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC7F,uBAAuB;AACvB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,qBAAqB,GAEtB,MAAM,qBAAqB,CAAC;AAC7B,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEvG,aAAa;AACb,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAQzB,sBAAsB;AACtB,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE7F,qBAAqB;AACrB,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,eAAe;AACf,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAS9D,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC7F,uBAAuB;AACvB,OAAO,EACL,eAAe,EACf,iBAAiB,EACjB,qBAAqB,GAEtB,MAAM,qBAAqB,CAAC;AAC7B,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAEvG,aAAa;AACb,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAQzB,sBAAsB;AACtB,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE7F,qBAAqB;AACrB,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,yBAAyB,CAAC;AAEjC,6BAA6B;AAC7B,OAAO,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAC;AAEjF,6BAA6B;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,gCAAgC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
@@ -90,13 +90,13 @@ export declare const PersonalityConfigSchema: z.ZodObject<{
90
90
  directness?: number | undefined;
91
91
  formality?: number | undefined;
92
92
  } | undefined;
93
- description?: string | undefined;
94
- license?: "MIT" | "CC-BY-4.0" | "CC-BY-SA-4.0" | "CC0" | "proprietary" | undefined;
95
- errorStyle?: "professional" | "apologetic" | "matter_of_fact" | "self_deprecating" | "gentle" | "detailed" | "encouraging" | "terse" | "educational" | undefined;
96
93
  boundaries?: {
97
94
  neverJokeAbout?: string[] | undefined;
98
95
  neverAdviseOn?: string[] | undefined;
99
96
  } | undefined;
97
+ errorStyle?: "professional" | "apologetic" | "matter_of_fact" | "self_deprecating" | "gentle" | "detailed" | "encouraging" | "terse" | "educational" | undefined;
98
+ description?: string | undefined;
99
+ license?: "MIT" | "CC-BY-4.0" | "CC-BY-SA-4.0" | "CC0" | "proprietary" | undefined;
100
100
  bodyMarkdown?: string | undefined;
101
101
  voiceProfile?: {
102
102
  voice?: "onyx" | "nova" | "fable" | "echo" | "shimmer" | "alloy" | undefined;
@@ -123,13 +123,13 @@ export declare const PersonalityConfigSchema: z.ZodObject<{
123
123
  directness?: number | undefined;
124
124
  formality?: number | undefined;
125
125
  } | undefined;
126
- description?: string | undefined;
127
- license?: "MIT" | "CC-BY-4.0" | "CC-BY-SA-4.0" | "CC0" | "proprietary" | undefined;
128
- errorStyle?: "professional" | "apologetic" | "matter_of_fact" | "self_deprecating" | "gentle" | "detailed" | "encouraging" | "terse" | "educational" | undefined;
129
126
  boundaries?: {
130
127
  neverJokeAbout?: string[] | undefined;
131
128
  neverAdviseOn?: string[] | undefined;
132
129
  } | undefined;
130
+ errorStyle?: "professional" | "apologetic" | "matter_of_fact" | "self_deprecating" | "gentle" | "detailed" | "encouraging" | "terse" | "educational" | undefined;
131
+ description?: string | undefined;
132
+ license?: "MIT" | "CC-BY-4.0" | "CC-BY-SA-4.0" | "CC0" | "proprietary" | undefined;
133
133
  bodyMarkdown?: string | undefined;
134
134
  voiceProfile?: {
135
135
  voice?: "onyx" | "nova" | "fable" | "echo" | "shimmer" | "alloy" | undefined;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Parses SOUL.md content for domain-indicative keywords and produces
3
+ * trait weight biases. Uses the same keyword sets as The Architect's
4
+ * context detector (17 domains).
5
+ *
6
+ * Biases are in the range [0, 0.15] — subtle nudges, not overrides.
7
+ * Only domains with >= 3 keyword hits produce a bias.
8
+ */
9
+ export declare function parseSoulBiases(soulContent: string): Record<string, number>;
10
+ //# sourceMappingURL=soul-bias-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soul-bias-parser.d.ts","sourceRoot":"","sources":["../src/soul-bias-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA2BH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmB3E"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Parses SOUL.md content for domain-indicative keywords and produces
3
+ * trait weight biases. Uses the same keyword sets as The Architect's
4
+ * context detector (17 domains).
5
+ *
6
+ * Biases are in the range [0, 0.15] — subtle nudges, not overrides.
7
+ * Only domains with >= 3 keyword hits produce a bias.
8
+ */
9
+ const DOMAIN_KEYWORDS = {
10
+ security_review: ['vulnerability', 'vulnerabilities', 'CVE', 'threat', 'exploit', 'patch', 'audit', 'compliance', 'penetration', 'firewall', 'incident', 'breach', 'SIEM', 'SOC', 'CTEM', 'attack surface', 'zero-day', 'security', 'encryption', 'authentication', 'authorization', 'hardening', 'malware', 'phishing'],
11
+ code_engineering: ['function', 'API', 'deploy', 'refactor', 'test', 'build', 'pipeline', 'CI/CD', 'container', 'microservice', 'typescript', 'python', 'rust', 'terraform', 'code', 'programming', 'database', 'git', 'docker', 'react', 'node', 'npm'],
12
+ architecture_design: ['architecture', 'scalability', 'ADR', 'microservice', 'monolith', 'event-driven', 'platform', 'infrastructure', 'distributed', 'load balancer', 'service mesh', 'database design', 'schema', 'data model', 'tech stack'],
13
+ debugging: ['error', 'bug', 'crash', 'stack trace', 'exception', 'timeout', 'fix', 'regression', 'flaky', 'memory leak', 'segfault', 'logs'],
14
+ team_leadership: ['team', 'hire', 'hiring', 'performance', 'culture', 'morale', 'feedback', 'onboarding', 'manage', 'leadership', 'standup', 'sprint', 'agile'],
15
+ crisis_management: ['breach', 'outage', 'incident', 'emergency', 'compromised', 'escalation', 'P1', 'disaster', 'recovery', 'rollback', 'hotfix', 'war room', 'postmortem'],
16
+ creative_work: ['brainstorm', 'creative', 'concept', 'innovation', 'prototype', 'design thinking', 'inspiration', 'experiment'],
17
+ writing_content: ['blog', 'article', 'newsletter', 'documentation', 'write', 'draft', 'edit', 'copy', 'essay', 'report'],
18
+ strategic_planning: ['strategy', 'roadmap', 'vision', 'priority', 'OKR', 'initiative', 'resource allocation', 'planning', 'goals', 'KPI'],
19
+ decision_making: ['decide', 'trade-off', 'pros and cons', 'risk', 'compare', 'alternatives', 'evaluate', 'criteria'],
20
+ personal_development: ['career', 'resume', 'interview', 'skill', 'certification', 'learning', 'growth path', 'mentor', 'promotion'],
21
+ sales_pitch: ['pitch', 'proposal', 'sell', 'demo', 'close', 'deal', 'prospect', 'value prop', 'ROI', 'pipeline'],
22
+ negotiation: ['negotiate', 'contract', 'terms', 'concession', 'counter-offer', 'compensation', 'salary', 'leverage'],
23
+ marketing_content: ['brand', 'audience', 'campaign', 'SEO', 'content strategy', 'positioning', 'social media', 'marketing', 'funnel', 'conversion'],
24
+ one_on_one: ['1:1', 'one-on-one', 'check-in', 'career', 'coaching', 'mentoring', 'direct report', 'feedback'],
25
+ learning_research: ['research', 'study', 'paper', 'methodology', 'analysis', 'findings', 'literature', 'experiment', 'data', 'hypothesis'],
26
+ };
27
+ const MIN_HITS = 3;
28
+ const MAX_BIAS = 0.15;
29
+ const BIAS_PER_HIT = 0.03;
30
+ export function parseSoulBiases(soulContent) {
31
+ if (!soulContent.trim())
32
+ return {};
33
+ const lower = soulContent.toLowerCase();
34
+ const biases = {};
35
+ for (const [domain, keywords] of Object.entries(DOMAIN_KEYWORDS)) {
36
+ let hits = 0;
37
+ for (const kw of keywords) {
38
+ if (lower.includes(kw.toLowerCase())) {
39
+ hits++;
40
+ }
41
+ }
42
+ if (hits >= MIN_HITS) {
43
+ biases[domain] = Math.min(hits * BIAS_PER_HIT, MAX_BIAS);
44
+ }
45
+ }
46
+ return biases;
47
+ }
48
+ //# sourceMappingURL=soul-bias-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"soul-bias-parser.js","sourceRoot":"","sources":["../src/soul-bias-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { TaskContext, ContextDomain } from '../schema.js';
2
+ import type { CorrectionStore } from './correction-store.js';
3
+ /**
4
+ * Returns all domain scores for debugging and transparency.
5
+ * Useful for understanding why a particular domain was selected.
6
+ */
7
+ export declare function scoreAllDomains(message: string): Record<ContextDomain, number>;
8
+ /**
9
+ * Detects the full task context from a user message and optional conversation
10
+ * history. Combines domain detection, emotional register analysis, complexity
11
+ * inference, stakes assessment, and mode classification into a single
12
+ * TaskContext object that drives trait modulation.
13
+ *
14
+ * When a `correctionStore` is provided, the auto-detected domain is checked
15
+ * against learned correction patterns. If a high-confidence correction is
16
+ * found, it overrides the detection and the `corrected` / `originalDomain`
17
+ * fields are set on the returned context.
18
+ */
19
+ export declare function detectContext(userMessage: string, history?: Array<{
20
+ role: string;
21
+ content: string;
22
+ }>, correctionStore?: CorrectionStore): TaskContext;
23
+ //# sourceMappingURL=context-detector.d.ts.map