sinapse-ai 1.10.0 → 1.11.1

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.
@@ -141,7 +141,7 @@ class GreetingBuilder {
141
141
  // Check user preference (Story 6.1.4), now profile-aware (Story ACT-2)
142
142
  // Story ACT-2: PM agent bypasses bob mode preference restriction because
143
143
  // PM is the primary interface in bob mode and needs the full contextual greeting.
144
- const preference = (userProfile === 'bob' && agent.id === 'pm')
144
+ const preference = (userProfile === 'bob' && this._normalizeAgentId(agent.id) === 'pm')
145
145
  ? this.preferenceManager.getPreference('advanced')
146
146
  : this.preferenceManager.getPreference(userProfile);
147
147
 
@@ -216,18 +216,18 @@ class GreetingBuilder {
216
216
 
217
217
  // 2. Role description (new session only, but skip in bob mode for non-PM)
218
218
  // Story ACT-7 AC3: References current story and branch when available
219
- if (sessionType === 'new' && !(userProfile === 'bob' && agent.id !== 'pm')) {
219
+ if (sessionType === 'new' && !(userProfile === 'bob' && this._normalizeAgentId(agent.id) !== 'pm')) {
220
220
  sections.push(this.buildRoleDescription(agent, sectionContext));
221
221
  }
222
222
 
223
223
  // 3. Project status (if git configured, but skip in bob mode for non-PM)
224
224
  // Story ACT-7 AC4: Natural language narrative format
225
- if (gitConfig.configured && projectStatus && !(userProfile === 'bob' && agent.id !== 'pm')) {
225
+ if (gitConfig.configured && projectStatus && !(userProfile === 'bob' && this._normalizeAgentId(agent.id) !== 'pm')) {
226
226
  sections.push(this.buildProjectStatus(projectStatus, sessionType, sectionContext));
227
227
  }
228
228
 
229
229
  // Story 10.3 - AC1, AC4: Bob mode redirect for non-PM agents
230
- if (userProfile === 'bob' && agent.id !== 'pm') {
230
+ if (userProfile === 'bob' && this._normalizeAgentId(agent.id) !== 'pm') {
231
231
  // Show redirect message instead of normal content
232
232
  sections.push(this.buildBobModeRedirect(agent));
233
233
  return sections.filter(Boolean).join('\n\n');
@@ -791,6 +791,31 @@ class GreetingBuilder {
791
791
  };
792
792
  }
793
793
 
794
+ /**
795
+ * Normalize a canonical (long) agent id to the short token used by
796
+ * suggestion/action lookups.
797
+ *
798
+ * Runtime agents expose their long canonical id (e.g. `developer`,
799
+ * `quality-gate`) via frontmatter, while these lookups historically keyed
800
+ * off short aliases (`dev`, `qa`, ...). Without this normalization the
801
+ * switch/map below never match in production and every suggestion/action
802
+ * silently falls through to null/generic. Idempotent: a short id passed in
803
+ * is returned unchanged.
804
+ * @private
805
+ * @param {string} agentId
806
+ * @returns {string}
807
+ */
808
+ _normalizeAgentId(agentId) {
809
+ const LONG_TO_SHORT = {
810
+ developer: 'dev',
811
+ 'quality-gate': 'qa',
812
+ 'product-lead': 'po',
813
+ 'project-lead': 'pm',
814
+ 'sprint-lead': 'sm',
815
+ };
816
+ return LONG_TO_SHORT[agentId] || agentId;
817
+ }
818
+
794
819
  _getAgentAction(agentId, _storyContext) {
795
820
  const actions = {
796
821
  qa: 'revisar a qualidade dessa implementação',
@@ -800,10 +825,13 @@ class GreetingBuilder {
800
825
  sm: 'coordenar o desenvolvimento',
801
826
  };
802
827
 
803
- return actions[agentId] || 'continuar o trabalho';
828
+ return actions[this._normalizeAgentId(agentId)] || 'continuar o trabalho';
804
829
  }
805
830
 
806
831
  _suggestCommand(agentId, prevAgentId, storyContext) {
832
+ agentId = this._normalizeAgentId(agentId);
833
+ prevAgentId = this._normalizeAgentId(prevAgentId);
834
+
807
835
  // Agent transition commands
808
836
  if (prevAgentId === 'dev' && agentId === 'qa') {
809
837
  return storyContext.storyFile ? `*review ${storyContext.storyFile}` : '*review';
@@ -1267,7 +1295,7 @@ Use \`@pm\` (Bob) para todas as interações. Bob vai orquestrar os outros agent
1267
1295
 
1268
1296
  // Story 10.3 - AC1, AC2: Profile-based filtering
1269
1297
  // If bob mode AND not PM agent: return empty (will show redirect message instead)
1270
- if (userProfile === 'bob' && agent.id !== 'pm') {
1298
+ if (userProfile === 'bob' && this._normalizeAgentId(agent.id) !== 'pm') {
1271
1299
  return [];
1272
1300
  }
1273
1301
 
@@ -69,7 +69,13 @@ const NAMED_PATTERNS = [
69
69
  { name: 'Supabase DB URL', pattern: /postgresql:\/\/postgres\.[A-Za-z0-9]+:[^@\s]+@/i, credentialPlaceholderGated: true },
70
70
 
71
71
  // Generic Patterns (broader, lower confidence — placeholder-allowlisted)
72
- { name: 'Hardcoded Password', pattern: /(?:password|passwd|pwd)\s*[=:]\s*['"][^'"]{8,}['"]/i, lowConfidence: true },
72
+ // Value class excludes whitespace (same rationale as the connection strings
73
+ // above): real password values are space-free tokens. The old `[^'"]{8,}`
74
+ // matched human UI labels whose i18n key ends in "Password" followed by a
75
+ // sentence value, false-positiving on EVERY edit to a locale file. The
76
+ // whitespace-excluding class still catches space-free hardcoded passwords,
77
+ // including camelCase-keyed ones.
78
+ { name: 'Hardcoded Password', pattern: /(?:password|passwd|pwd)\s*[=:]\s*['"][^'"\s]{8,}['"]/i, lowConfidence: true },
73
79
  { name: 'Bearer Token', pattern: /[Bb]earer\s+[A-Za-z0-9_\-.]{20,}/, entropyGated: true, lowConfidence: true },
74
80
  { name: 'Basic Auth', pattern: /[Bb]asic\s+[A-Za-z0-9+/=]{20,}/, lowConfidence: true },
75
81
 
@@ -7,7 +7,7 @@
7
7
  # - SHA256 hashes for change detection
8
8
  # - File types for categorization
9
9
  #
10
- version: 1.10.0
10
+ version: 1.11.1
11
11
  generator: scripts/generate-install-manifest.js
12
12
  file_count: 1180
13
13
  files:
@@ -1736,9 +1736,9 @@ files:
1736
1736
  type: script
1737
1737
  size: 11890
1738
1738
  - path: development/scripts/greeting-builder.js
1739
- hash: sha256:26f61c19a35c9e49c0ae8319d95f2f6ce957d16297d4c50f2e61f08193fb1e40
1739
+ hash: sha256:293b89379a558837cfab65893130b638d6207079cde2d5252578089bb25732be
1740
1740
  type: script
1741
- size: 50235
1741
+ size: 51322
1742
1742
  - path: development/scripts/greeting-config-cli.js
1743
1743
  hash: sha256:e3167244bc9c60843b0526f7f730e9e950e97c7b0b81b92f3ae3d19f93fc27e4
1744
1744
  type: script
@@ -4456,13 +4456,13 @@ files:
4456
4456
  type: script
4457
4457
  size: 377
4458
4458
  - path: scripts/diagnostics/health-dashboard/package-lock.json
4459
- hash: sha256:af446a82b6f1e2815e7b4ccb4cc708dc2823ed0b7b37a64040c34ad0937bdabf
4459
+ hash: sha256:536129100f871d154a3950e04a606f576d685b200ed1c5bf5779fae8c4ffa352
4460
4460
  type: script
4461
- size: 184365
4461
+ size: 184649
4462
4462
  - path: scripts/diagnostics/health-dashboard/package.json
4463
- hash: sha256:bceff5a33e4bde3dc5cd5796ec2ac2150ca37a6a4b1964cd9c7f7314b7dd5e16
4463
+ hash: sha256:1330f9075de40d434424592164950a8cbd196c10173631df1016abb3dbc5add4
4464
4464
  type: script
4465
- size: 566
4465
+ size: 668
4466
4466
  - path: scripts/diagnostics/health-dashboard/public/favicon.svg
4467
4467
  hash: sha256:bad3a2389b3ff29f3da8035020dd8362c2eba564b787b9bc9c4f1edddd0b7cd4
4468
4468
  type: script
@@ -10,24 +10,24 @@
10
10
  "dependencies": {
11
11
  "react": "^18.2.0",
12
12
  "react-dom": "^18.2.0",
13
- "react-router-dom": "^6.20.0",
13
+ "react-router-dom": "^6.30.4",
14
14
  "recharts": "^2.10.0"
15
15
  },
16
16
  "devDependencies": {
17
17
  "@vitejs/plugin-react": "^4.2.0",
18
18
  "eslint": "^8.54.0",
19
19
  "eslint-plugin-react": "^7.33.0",
20
- "vite": "^7.3.1"
20
+ "vite": "^7.3.5"
21
21
  }
22
22
  },
23
23
  "node_modules/@babel/code-frame": {
24
- "version": "7.29.0",
25
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
26
- "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
24
+ "version": "7.29.7",
25
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.7.tgz",
26
+ "integrity": "sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==",
27
27
  "dev": true,
28
28
  "license": "MIT",
29
29
  "dependencies": {
30
- "@babel/helper-validator-identifier": "^7.28.5",
30
+ "@babel/helper-validator-identifier": "^7.29.7",
31
31
  "js-tokens": "^4.0.0",
32
32
  "picocolors": "^1.1.1"
33
33
  },
@@ -36,9 +36,9 @@
36
36
  }
37
37
  },
38
38
  "node_modules/@babel/compat-data": {
39
- "version": "7.29.0",
40
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz",
41
- "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==",
39
+ "version": "7.29.7",
40
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.7.tgz",
41
+ "integrity": "sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==",
42
42
  "dev": true,
43
43
  "license": "MIT",
44
44
  "engines": {
@@ -46,21 +46,21 @@
46
46
  }
47
47
  },
48
48
  "node_modules/@babel/core": {
49
- "version": "7.29.0",
50
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz",
51
- "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
49
+ "version": "7.29.7",
50
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.7.tgz",
51
+ "integrity": "sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==",
52
52
  "dev": true,
53
53
  "license": "MIT",
54
54
  "dependencies": {
55
- "@babel/code-frame": "^7.29.0",
56
- "@babel/generator": "^7.29.0",
57
- "@babel/helper-compilation-targets": "^7.28.6",
58
- "@babel/helper-module-transforms": "^7.28.6",
59
- "@babel/helpers": "^7.28.6",
60
- "@babel/parser": "^7.29.0",
61
- "@babel/template": "^7.28.6",
62
- "@babel/traverse": "^7.29.0",
63
- "@babel/types": "^7.29.0",
55
+ "@babel/code-frame": "^7.29.7",
56
+ "@babel/generator": "^7.29.7",
57
+ "@babel/helper-compilation-targets": "^7.29.7",
58
+ "@babel/helper-module-transforms": "^7.29.7",
59
+ "@babel/helpers": "^7.29.7",
60
+ "@babel/parser": "^7.29.7",
61
+ "@babel/template": "^7.29.7",
62
+ "@babel/traverse": "^7.29.7",
63
+ "@babel/types": "^7.29.7",
64
64
  "@jridgewell/remapping": "^2.3.5",
65
65
  "convert-source-map": "^2.0.0",
66
66
  "debug": "^4.1.0",
@@ -77,14 +77,14 @@
77
77
  }
78
78
  },
79
79
  "node_modules/@babel/generator": {
80
- "version": "7.29.1",
81
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz",
82
- "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==",
80
+ "version": "7.29.7",
81
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz",
82
+ "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==",
83
83
  "dev": true,
84
84
  "license": "MIT",
85
85
  "dependencies": {
86
- "@babel/parser": "^7.29.0",
87
- "@babel/types": "^7.29.0",
86
+ "@babel/parser": "^7.29.7",
87
+ "@babel/types": "^7.29.7",
88
88
  "@jridgewell/gen-mapping": "^0.3.12",
89
89
  "@jridgewell/trace-mapping": "^0.3.28",
90
90
  "jsesc": "^3.0.2"
@@ -94,14 +94,14 @@
94
94
  }
95
95
  },
96
96
  "node_modules/@babel/helper-compilation-targets": {
97
- "version": "7.28.6",
98
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz",
99
- "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==",
97
+ "version": "7.29.7",
98
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.29.7.tgz",
99
+ "integrity": "sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==",
100
100
  "dev": true,
101
101
  "license": "MIT",
102
102
  "dependencies": {
103
- "@babel/compat-data": "^7.28.6",
104
- "@babel/helper-validator-option": "^7.27.1",
103
+ "@babel/compat-data": "^7.29.7",
104
+ "@babel/helper-validator-option": "^7.29.7",
105
105
  "browserslist": "^4.24.0",
106
106
  "lru-cache": "^5.1.1",
107
107
  "semver": "^6.3.1"
@@ -111,9 +111,9 @@
111
111
  }
112
112
  },
113
113
  "node_modules/@babel/helper-globals": {
114
- "version": "7.28.0",
115
- "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
116
- "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
114
+ "version": "7.29.7",
115
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.29.7.tgz",
116
+ "integrity": "sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==",
117
117
  "dev": true,
118
118
  "license": "MIT",
119
119
  "engines": {
@@ -121,29 +121,29 @@
121
121
  }
122
122
  },
123
123
  "node_modules/@babel/helper-module-imports": {
124
- "version": "7.28.6",
125
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz",
126
- "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==",
124
+ "version": "7.29.7",
125
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.29.7.tgz",
126
+ "integrity": "sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==",
127
127
  "dev": true,
128
128
  "license": "MIT",
129
129
  "dependencies": {
130
- "@babel/traverse": "^7.28.6",
131
- "@babel/types": "^7.28.6"
130
+ "@babel/traverse": "^7.29.7",
131
+ "@babel/types": "^7.29.7"
132
132
  },
133
133
  "engines": {
134
134
  "node": ">=6.9.0"
135
135
  }
136
136
  },
137
137
  "node_modules/@babel/helper-module-transforms": {
138
- "version": "7.28.6",
139
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz",
140
- "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==",
138
+ "version": "7.29.7",
139
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.29.7.tgz",
140
+ "integrity": "sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==",
141
141
  "dev": true,
142
142
  "license": "MIT",
143
143
  "dependencies": {
144
- "@babel/helper-module-imports": "^7.28.6",
145
- "@babel/helper-validator-identifier": "^7.28.5",
146
- "@babel/traverse": "^7.28.6"
144
+ "@babel/helper-module-imports": "^7.29.7",
145
+ "@babel/helper-validator-identifier": "^7.29.7",
146
+ "@babel/traverse": "^7.29.7"
147
147
  },
148
148
  "engines": {
149
149
  "node": ">=6.9.0"
@@ -163,9 +163,9 @@
163
163
  }
164
164
  },
165
165
  "node_modules/@babel/helper-string-parser": {
166
- "version": "7.27.1",
167
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
168
- "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
166
+ "version": "7.29.7",
167
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.29.7.tgz",
168
+ "integrity": "sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==",
169
169
  "dev": true,
170
170
  "license": "MIT",
171
171
  "engines": {
@@ -173,9 +173,9 @@
173
173
  }
174
174
  },
175
175
  "node_modules/@babel/helper-validator-identifier": {
176
- "version": "7.28.5",
177
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
178
- "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
176
+ "version": "7.29.7",
177
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.29.7.tgz",
178
+ "integrity": "sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==",
179
179
  "dev": true,
180
180
  "license": "MIT",
181
181
  "engines": {
@@ -183,9 +183,9 @@
183
183
  }
184
184
  },
185
185
  "node_modules/@babel/helper-validator-option": {
186
- "version": "7.27.1",
187
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
188
- "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
186
+ "version": "7.29.7",
187
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.29.7.tgz",
188
+ "integrity": "sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==",
189
189
  "dev": true,
190
190
  "license": "MIT",
191
191
  "engines": {
@@ -193,27 +193,27 @@
193
193
  }
194
194
  },
195
195
  "node_modules/@babel/helpers": {
196
- "version": "7.29.2",
197
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz",
198
- "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==",
196
+ "version": "7.29.7",
197
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.7.tgz",
198
+ "integrity": "sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==",
199
199
  "dev": true,
200
200
  "license": "MIT",
201
201
  "dependencies": {
202
- "@babel/template": "^7.28.6",
203
- "@babel/types": "^7.29.0"
202
+ "@babel/template": "^7.29.7",
203
+ "@babel/types": "^7.29.7"
204
204
  },
205
205
  "engines": {
206
206
  "node": ">=6.9.0"
207
207
  }
208
208
  },
209
209
  "node_modules/@babel/parser": {
210
- "version": "7.29.2",
211
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz",
212
- "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==",
210
+ "version": "7.29.7",
211
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz",
212
+ "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==",
213
213
  "dev": true,
214
214
  "license": "MIT",
215
215
  "dependencies": {
216
- "@babel/types": "^7.29.0"
216
+ "@babel/types": "^7.29.7"
217
217
  },
218
218
  "bin": {
219
219
  "parser": "bin/babel-parser.js"
@@ -264,33 +264,33 @@
264
264
  }
265
265
  },
266
266
  "node_modules/@babel/template": {
267
- "version": "7.28.6",
268
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz",
269
- "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
267
+ "version": "7.29.7",
268
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.29.7.tgz",
269
+ "integrity": "sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==",
270
270
  "dev": true,
271
271
  "license": "MIT",
272
272
  "dependencies": {
273
- "@babel/code-frame": "^7.28.6",
274
- "@babel/parser": "^7.28.6",
275
- "@babel/types": "^7.28.6"
273
+ "@babel/code-frame": "^7.29.7",
274
+ "@babel/parser": "^7.29.7",
275
+ "@babel/types": "^7.29.7"
276
276
  },
277
277
  "engines": {
278
278
  "node": ">=6.9.0"
279
279
  }
280
280
  },
281
281
  "node_modules/@babel/traverse": {
282
- "version": "7.29.0",
283
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz",
284
- "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==",
282
+ "version": "7.29.7",
283
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz",
284
+ "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==",
285
285
  "dev": true,
286
286
  "license": "MIT",
287
287
  "dependencies": {
288
- "@babel/code-frame": "^7.29.0",
289
- "@babel/generator": "^7.29.0",
290
- "@babel/helper-globals": "^7.28.0",
291
- "@babel/parser": "^7.29.0",
292
- "@babel/template": "^7.28.6",
293
- "@babel/types": "^7.29.0",
288
+ "@babel/code-frame": "^7.29.7",
289
+ "@babel/generator": "^7.29.7",
290
+ "@babel/helper-globals": "^7.29.7",
291
+ "@babel/parser": "^7.29.7",
292
+ "@babel/template": "^7.29.7",
293
+ "@babel/types": "^7.29.7",
294
294
  "debug": "^4.3.1"
295
295
  },
296
296
  "engines": {
@@ -298,23 +298,23 @@
298
298
  }
299
299
  },
300
300
  "node_modules/@babel/types": {
301
- "version": "7.29.0",
302
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz",
303
- "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
301
+ "version": "7.29.7",
302
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz",
303
+ "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==",
304
304
  "dev": true,
305
305
  "license": "MIT",
306
306
  "dependencies": {
307
- "@babel/helper-string-parser": "^7.27.1",
308
- "@babel/helper-validator-identifier": "^7.28.5"
307
+ "@babel/helper-string-parser": "^7.29.7",
308
+ "@babel/helper-validator-identifier": "^7.29.7"
309
309
  },
310
310
  "engines": {
311
311
  "node": ">=6.9.0"
312
312
  }
313
313
  },
314
314
  "node_modules/@esbuild/aix-ppc64": {
315
- "version": "0.27.7",
316
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz",
317
- "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==",
315
+ "version": "0.28.1",
316
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.1.tgz",
317
+ "integrity": "sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==",
318
318
  "cpu": [
319
319
  "ppc64"
320
320
  ],
@@ -329,9 +329,9 @@
329
329
  }
330
330
  },
331
331
  "node_modules/@esbuild/android-arm": {
332
- "version": "0.27.7",
333
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz",
334
- "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==",
332
+ "version": "0.28.1",
333
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.1.tgz",
334
+ "integrity": "sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==",
335
335
  "cpu": [
336
336
  "arm"
337
337
  ],
@@ -346,9 +346,9 @@
346
346
  }
347
347
  },
348
348
  "node_modules/@esbuild/android-arm64": {
349
- "version": "0.27.7",
350
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz",
351
- "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==",
349
+ "version": "0.28.1",
350
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.1.tgz",
351
+ "integrity": "sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==",
352
352
  "cpu": [
353
353
  "arm64"
354
354
  ],
@@ -363,9 +363,9 @@
363
363
  }
364
364
  },
365
365
  "node_modules/@esbuild/android-x64": {
366
- "version": "0.27.7",
367
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz",
368
- "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==",
366
+ "version": "0.28.1",
367
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.1.tgz",
368
+ "integrity": "sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==",
369
369
  "cpu": [
370
370
  "x64"
371
371
  ],
@@ -380,9 +380,9 @@
380
380
  }
381
381
  },
382
382
  "node_modules/@esbuild/darwin-arm64": {
383
- "version": "0.27.7",
384
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz",
385
- "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==",
383
+ "version": "0.28.1",
384
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.1.tgz",
385
+ "integrity": "sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==",
386
386
  "cpu": [
387
387
  "arm64"
388
388
  ],
@@ -397,9 +397,9 @@
397
397
  }
398
398
  },
399
399
  "node_modules/@esbuild/darwin-x64": {
400
- "version": "0.27.7",
401
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz",
402
- "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==",
400
+ "version": "0.28.1",
401
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.1.tgz",
402
+ "integrity": "sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==",
403
403
  "cpu": [
404
404
  "x64"
405
405
  ],
@@ -414,9 +414,9 @@
414
414
  }
415
415
  },
416
416
  "node_modules/@esbuild/freebsd-arm64": {
417
- "version": "0.27.7",
418
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz",
419
- "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==",
417
+ "version": "0.28.1",
418
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.1.tgz",
419
+ "integrity": "sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==",
420
420
  "cpu": [
421
421
  "arm64"
422
422
  ],
@@ -431,9 +431,9 @@
431
431
  }
432
432
  },
433
433
  "node_modules/@esbuild/freebsd-x64": {
434
- "version": "0.27.7",
435
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz",
436
- "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==",
434
+ "version": "0.28.1",
435
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.1.tgz",
436
+ "integrity": "sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==",
437
437
  "cpu": [
438
438
  "x64"
439
439
  ],
@@ -448,9 +448,9 @@
448
448
  }
449
449
  },
450
450
  "node_modules/@esbuild/linux-arm": {
451
- "version": "0.27.7",
452
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz",
453
- "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==",
451
+ "version": "0.28.1",
452
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.1.tgz",
453
+ "integrity": "sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==",
454
454
  "cpu": [
455
455
  "arm"
456
456
  ],
@@ -465,9 +465,9 @@
465
465
  }
466
466
  },
467
467
  "node_modules/@esbuild/linux-arm64": {
468
- "version": "0.27.7",
469
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz",
470
- "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==",
468
+ "version": "0.28.1",
469
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.1.tgz",
470
+ "integrity": "sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==",
471
471
  "cpu": [
472
472
  "arm64"
473
473
  ],
@@ -482,9 +482,9 @@
482
482
  }
483
483
  },
484
484
  "node_modules/@esbuild/linux-ia32": {
485
- "version": "0.27.7",
486
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz",
487
- "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==",
485
+ "version": "0.28.1",
486
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.1.tgz",
487
+ "integrity": "sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==",
488
488
  "cpu": [
489
489
  "ia32"
490
490
  ],
@@ -499,9 +499,9 @@
499
499
  }
500
500
  },
501
501
  "node_modules/@esbuild/linux-loong64": {
502
- "version": "0.27.7",
503
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz",
504
- "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==",
502
+ "version": "0.28.1",
503
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.1.tgz",
504
+ "integrity": "sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==",
505
505
  "cpu": [
506
506
  "loong64"
507
507
  ],
@@ -516,9 +516,9 @@
516
516
  }
517
517
  },
518
518
  "node_modules/@esbuild/linux-mips64el": {
519
- "version": "0.27.7",
520
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz",
521
- "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==",
519
+ "version": "0.28.1",
520
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.1.tgz",
521
+ "integrity": "sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==",
522
522
  "cpu": [
523
523
  "mips64el"
524
524
  ],
@@ -533,9 +533,9 @@
533
533
  }
534
534
  },
535
535
  "node_modules/@esbuild/linux-ppc64": {
536
- "version": "0.27.7",
537
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz",
538
- "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==",
536
+ "version": "0.28.1",
537
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.1.tgz",
538
+ "integrity": "sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==",
539
539
  "cpu": [
540
540
  "ppc64"
541
541
  ],
@@ -550,9 +550,9 @@
550
550
  }
551
551
  },
552
552
  "node_modules/@esbuild/linux-riscv64": {
553
- "version": "0.27.7",
554
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz",
555
- "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==",
553
+ "version": "0.28.1",
554
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.1.tgz",
555
+ "integrity": "sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==",
556
556
  "cpu": [
557
557
  "riscv64"
558
558
  ],
@@ -567,9 +567,9 @@
567
567
  }
568
568
  },
569
569
  "node_modules/@esbuild/linux-s390x": {
570
- "version": "0.27.7",
571
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz",
572
- "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==",
570
+ "version": "0.28.1",
571
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.1.tgz",
572
+ "integrity": "sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==",
573
573
  "cpu": [
574
574
  "s390x"
575
575
  ],
@@ -584,9 +584,9 @@
584
584
  }
585
585
  },
586
586
  "node_modules/@esbuild/linux-x64": {
587
- "version": "0.27.7",
588
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz",
589
- "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==",
587
+ "version": "0.28.1",
588
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.1.tgz",
589
+ "integrity": "sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==",
590
590
  "cpu": [
591
591
  "x64"
592
592
  ],
@@ -601,9 +601,9 @@
601
601
  }
602
602
  },
603
603
  "node_modules/@esbuild/netbsd-arm64": {
604
- "version": "0.27.7",
605
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz",
606
- "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==",
604
+ "version": "0.28.1",
605
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.1.tgz",
606
+ "integrity": "sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==",
607
607
  "cpu": [
608
608
  "arm64"
609
609
  ],
@@ -618,9 +618,9 @@
618
618
  }
619
619
  },
620
620
  "node_modules/@esbuild/netbsd-x64": {
621
- "version": "0.27.7",
622
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz",
623
- "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==",
621
+ "version": "0.28.1",
622
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.1.tgz",
623
+ "integrity": "sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==",
624
624
  "cpu": [
625
625
  "x64"
626
626
  ],
@@ -635,9 +635,9 @@
635
635
  }
636
636
  },
637
637
  "node_modules/@esbuild/openbsd-arm64": {
638
- "version": "0.27.7",
639
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz",
640
- "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==",
638
+ "version": "0.28.1",
639
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.1.tgz",
640
+ "integrity": "sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==",
641
641
  "cpu": [
642
642
  "arm64"
643
643
  ],
@@ -652,9 +652,9 @@
652
652
  }
653
653
  },
654
654
  "node_modules/@esbuild/openbsd-x64": {
655
- "version": "0.27.7",
656
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz",
657
- "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==",
655
+ "version": "0.28.1",
656
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.1.tgz",
657
+ "integrity": "sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==",
658
658
  "cpu": [
659
659
  "x64"
660
660
  ],
@@ -669,9 +669,9 @@
669
669
  }
670
670
  },
671
671
  "node_modules/@esbuild/openharmony-arm64": {
672
- "version": "0.27.7",
673
- "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz",
674
- "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==",
672
+ "version": "0.28.1",
673
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.1.tgz",
674
+ "integrity": "sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==",
675
675
  "cpu": [
676
676
  "arm64"
677
677
  ],
@@ -686,9 +686,9 @@
686
686
  }
687
687
  },
688
688
  "node_modules/@esbuild/sunos-x64": {
689
- "version": "0.27.7",
690
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz",
691
- "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==",
689
+ "version": "0.28.1",
690
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.1.tgz",
691
+ "integrity": "sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==",
692
692
  "cpu": [
693
693
  "x64"
694
694
  ],
@@ -703,9 +703,9 @@
703
703
  }
704
704
  },
705
705
  "node_modules/@esbuild/win32-arm64": {
706
- "version": "0.27.7",
707
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz",
708
- "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==",
706
+ "version": "0.28.1",
707
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.1.tgz",
708
+ "integrity": "sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==",
709
709
  "cpu": [
710
710
  "arm64"
711
711
  ],
@@ -720,9 +720,9 @@
720
720
  }
721
721
  },
722
722
  "node_modules/@esbuild/win32-ia32": {
723
- "version": "0.27.7",
724
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz",
725
- "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==",
723
+ "version": "0.28.1",
724
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.1.tgz",
725
+ "integrity": "sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==",
726
726
  "cpu": [
727
727
  "ia32"
728
728
  ],
@@ -737,9 +737,9 @@
737
737
  }
738
738
  },
739
739
  "node_modules/@esbuild/win32-x64": {
740
- "version": "0.27.7",
741
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz",
742
- "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==",
740
+ "version": "0.28.1",
741
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.1.tgz",
742
+ "integrity": "sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==",
743
743
  "cpu": [
744
744
  "x64"
745
745
  ],
@@ -943,9 +943,9 @@
943
943
  }
944
944
  },
945
945
  "node_modules/@remix-run/router": {
946
- "version": "1.23.2",
947
- "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.2.tgz",
948
- "integrity": "sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==",
946
+ "version": "1.23.3",
947
+ "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.3.tgz",
948
+ "integrity": "sha512-4An71tdz9X8+3sI4Qqqd2LWd9vS39J7sqd9EU4Scw7TJE/qB10Flv/UuqbPVgfQV9XoK8Np6jNquZitnZq5i+Q==",
949
949
  "license": "MIT",
950
950
  "engines": {
951
951
  "node": ">=14.0.0"
@@ -1696,9 +1696,9 @@
1696
1696
  "license": "MIT"
1697
1697
  },
1698
1698
  "node_modules/baseline-browser-mapping": {
1699
- "version": "2.10.19",
1700
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.19.tgz",
1701
- "integrity": "sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g==",
1699
+ "version": "2.10.38",
1700
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.38.tgz",
1701
+ "integrity": "sha512-31/02mVB4yuQU6adKk5SlY6m+mxDwUq5KZkyYgnLrrKl7TEm1+3PyDtDBz2kOv/wxZz41GHsvV1A/u6RmiyBvw==",
1702
1702
  "dev": true,
1703
1703
  "license": "Apache-2.0",
1704
1704
  "bin": {
@@ -1814,9 +1814,9 @@
1814
1814
  }
1815
1815
  },
1816
1816
  "node_modules/caniuse-lite": {
1817
- "version": "1.0.30001788",
1818
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001788.tgz",
1819
- "integrity": "sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==",
1817
+ "version": "1.0.30001799",
1818
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001799.tgz",
1819
+ "integrity": "sha512-hG1bReV+OUU+MOqK4t/ZWI0tZOyz3rqS9XuhOUz1cIcbwBKjOyJEJuw9ER5JuNyqxNk8u/JUVbGibBOL1yrjFw==",
1820
1820
  "dev": true,
1821
1821
  "funding": [
1822
1822
  {
@@ -2196,9 +2196,9 @@
2196
2196
  }
2197
2197
  },
2198
2198
  "node_modules/electron-to-chromium": {
2199
- "version": "1.5.339",
2200
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.339.tgz",
2201
- "integrity": "sha512-Is+0BBHJ4NrdpAYiperrmp53pLywG/yV/6lIMTAnhxvzj/Cmn5Q/ogSHC6AKe7X+8kPLxxFk0cs5oc/3j/fxIg==",
2199
+ "version": "1.5.375",
2200
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.375.tgz",
2201
+ "integrity": "sha512-ZWP5eB4BVPW/ZYo9252hQZHZ5XavtsTgpbhcmMmRwymavC5AsLWQWBPaKMeNd2LW0KGby5HPXvj7+sr4ta5j/Q==",
2202
2202
  "dev": true,
2203
2203
  "license": "ISC"
2204
2204
  },
@@ -2380,9 +2380,9 @@
2380
2380
  }
2381
2381
  },
2382
2382
  "node_modules/esbuild": {
2383
- "version": "0.27.7",
2384
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz",
2385
- "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==",
2383
+ "version": "0.28.1",
2384
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.1.tgz",
2385
+ "integrity": "sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==",
2386
2386
  "dev": true,
2387
2387
  "hasInstallScript": true,
2388
2388
  "license": "MIT",
@@ -2393,32 +2393,32 @@
2393
2393
  "node": ">=18"
2394
2394
  },
2395
2395
  "optionalDependencies": {
2396
- "@esbuild/aix-ppc64": "0.27.7",
2397
- "@esbuild/android-arm": "0.27.7",
2398
- "@esbuild/android-arm64": "0.27.7",
2399
- "@esbuild/android-x64": "0.27.7",
2400
- "@esbuild/darwin-arm64": "0.27.7",
2401
- "@esbuild/darwin-x64": "0.27.7",
2402
- "@esbuild/freebsd-arm64": "0.27.7",
2403
- "@esbuild/freebsd-x64": "0.27.7",
2404
- "@esbuild/linux-arm": "0.27.7",
2405
- "@esbuild/linux-arm64": "0.27.7",
2406
- "@esbuild/linux-ia32": "0.27.7",
2407
- "@esbuild/linux-loong64": "0.27.7",
2408
- "@esbuild/linux-mips64el": "0.27.7",
2409
- "@esbuild/linux-ppc64": "0.27.7",
2410
- "@esbuild/linux-riscv64": "0.27.7",
2411
- "@esbuild/linux-s390x": "0.27.7",
2412
- "@esbuild/linux-x64": "0.27.7",
2413
- "@esbuild/netbsd-arm64": "0.27.7",
2414
- "@esbuild/netbsd-x64": "0.27.7",
2415
- "@esbuild/openbsd-arm64": "0.27.7",
2416
- "@esbuild/openbsd-x64": "0.27.7",
2417
- "@esbuild/openharmony-arm64": "0.27.7",
2418
- "@esbuild/sunos-x64": "0.27.7",
2419
- "@esbuild/win32-arm64": "0.27.7",
2420
- "@esbuild/win32-ia32": "0.27.7",
2421
- "@esbuild/win32-x64": "0.27.7"
2396
+ "@esbuild/aix-ppc64": "0.28.1",
2397
+ "@esbuild/android-arm": "0.28.1",
2398
+ "@esbuild/android-arm64": "0.28.1",
2399
+ "@esbuild/android-x64": "0.28.1",
2400
+ "@esbuild/darwin-arm64": "0.28.1",
2401
+ "@esbuild/darwin-x64": "0.28.1",
2402
+ "@esbuild/freebsd-arm64": "0.28.1",
2403
+ "@esbuild/freebsd-x64": "0.28.1",
2404
+ "@esbuild/linux-arm": "0.28.1",
2405
+ "@esbuild/linux-arm64": "0.28.1",
2406
+ "@esbuild/linux-ia32": "0.28.1",
2407
+ "@esbuild/linux-loong64": "0.28.1",
2408
+ "@esbuild/linux-mips64el": "0.28.1",
2409
+ "@esbuild/linux-ppc64": "0.28.1",
2410
+ "@esbuild/linux-riscv64": "0.28.1",
2411
+ "@esbuild/linux-s390x": "0.28.1",
2412
+ "@esbuild/linux-x64": "0.28.1",
2413
+ "@esbuild/netbsd-arm64": "0.28.1",
2414
+ "@esbuild/netbsd-x64": "0.28.1",
2415
+ "@esbuild/openbsd-arm64": "0.28.1",
2416
+ "@esbuild/openbsd-x64": "0.28.1",
2417
+ "@esbuild/openharmony-arm64": "0.28.1",
2418
+ "@esbuild/sunos-x64": "0.28.1",
2419
+ "@esbuild/win32-arm64": "0.28.1",
2420
+ "@esbuild/win32-ia32": "0.28.1",
2421
+ "@esbuild/win32-x64": "0.28.1"
2422
2422
  }
2423
2423
  },
2424
2424
  "node_modules/escalade": {
@@ -3606,10 +3606,20 @@
3606
3606
  "license": "MIT"
3607
3607
  },
3608
3608
  "node_modules/js-yaml": {
3609
- "version": "4.1.1",
3610
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
3611
- "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
3609
+ "version": "4.2.0",
3610
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz",
3611
+ "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==",
3612
3612
  "dev": true,
3613
+ "funding": [
3614
+ {
3615
+ "type": "github",
3616
+ "url": "https://github.com/sponsors/puzrin"
3617
+ },
3618
+ {
3619
+ "type": "github",
3620
+ "url": "https://github.com/sponsors/nodeca"
3621
+ }
3622
+ ],
3613
3623
  "license": "MIT",
3614
3624
  "dependencies": {
3615
3625
  "argparse": "^2.0.1"
@@ -3832,11 +3842,14 @@
3832
3842
  }
3833
3843
  },
3834
3844
  "node_modules/node-releases": {
3835
- "version": "2.0.37",
3836
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz",
3837
- "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==",
3845
+ "version": "2.0.48",
3846
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.48.tgz",
3847
+ "integrity": "sha512-1uz8041X6LoI6ZSdZacM9lVY28vuzDlSKitnpbSNK0RfKoIJkX29NBPVEFXhnuSuEOA9Ww0xnPJ+ILWbGAv8DA==",
3838
3848
  "dev": true,
3839
- "license": "MIT"
3849
+ "license": "MIT",
3850
+ "engines": {
3851
+ "node": ">=18"
3852
+ }
3840
3853
  },
3841
3854
  "node_modules/object-assign": {
3842
3855
  "version": "4.1.1",
@@ -4226,12 +4239,12 @@
4226
4239
  }
4227
4240
  },
4228
4241
  "node_modules/react-router": {
4229
- "version": "6.30.3",
4230
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.3.tgz",
4231
- "integrity": "sha512-XRnlbKMTmktBkjCLE8/XcZFlnHvr2Ltdr1eJX4idL55/9BbORzyZEaIkBFDhFGCEWBBItsVrDxwx3gnisMitdw==",
4242
+ "version": "6.30.4",
4243
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.4.tgz",
4244
+ "integrity": "sha512-SVUsDe+DybHM/WmYKIVYhZh1o5Dcuf16yM6WjG02Q9XVFMZIJyHYhwrr6bFBXZkVP6z69kNkMyBCujt8FaFLJA==",
4232
4245
  "license": "MIT",
4233
4246
  "dependencies": {
4234
- "@remix-run/router": "1.23.2"
4247
+ "@remix-run/router": "1.23.3"
4235
4248
  },
4236
4249
  "engines": {
4237
4250
  "node": ">=14.0.0"
@@ -4241,13 +4254,13 @@
4241
4254
  }
4242
4255
  },
4243
4256
  "node_modules/react-router-dom": {
4244
- "version": "6.30.3",
4245
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.3.tgz",
4246
- "integrity": "sha512-pxPcv1AczD4vso7G4Z3TKcvlxK7g7TNt3/FNGMhfqyntocvYKj+GCatfigGDjbLozC4baguJ0ReCigoDJXb0ag==",
4257
+ "version": "6.30.4",
4258
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.4.tgz",
4259
+ "integrity": "sha512-q4HvNl+mmDdkS0g+MqiBZNteQJCuimWoOyHMy4T/RQLAn9Z29+E91QXRaxOujeMl2HTzRSS0KFPd7lxX3PjV0Q==",
4247
4260
  "license": "MIT",
4248
4261
  "dependencies": {
4249
- "@remix-run/router": "1.23.2",
4250
- "react-router": "6.30.3"
4262
+ "@remix-run/router": "1.23.3",
4263
+ "react-router": "6.30.4"
4251
4264
  },
4252
4265
  "engines": {
4253
4266
  "node": ">=14.0.0"
@@ -5114,9 +5127,9 @@
5114
5127
  }
5115
5128
  },
5116
5129
  "node_modules/vite": {
5117
- "version": "7.3.2",
5118
- "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.2.tgz",
5119
- "integrity": "sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==",
5130
+ "version": "7.3.5",
5131
+ "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.5.tgz",
5132
+ "integrity": "sha512-KuOaNhcnGFN2zIPGA7wRmzF+lJA1sea7rHq17aiJ++9lzY1WWG6Jpwqwe1KNbRVPIqHmr8GLYx7jbrQcN/7/ww==",
5120
5133
  "dev": true,
5121
5134
  "license": "MIT",
5122
5135
  "dependencies": {
@@ -12,14 +12,19 @@
12
12
  "dependencies": {
13
13
  "react": "^18.2.0",
14
14
  "react-dom": "^18.2.0",
15
- "react-router-dom": "^6.20.0",
15
+ "react-router-dom": "^6.30.4",
16
16
  "recharts": "^2.10.0"
17
17
  },
18
18
  "devDependencies": {
19
19
  "@vitejs/plugin-react": "^4.2.0",
20
20
  "eslint": "^8.54.0",
21
21
  "eslint-plugin-react": "^7.33.0",
22
- "vite": "^7.3.1"
22
+ "vite": "^7.3.5"
23
+ },
24
+ "overrides": {
25
+ "esbuild": "^0.28.1",
26
+ "js-yaml": "^4.2.0",
27
+ "@babel/core": "^7.29.6"
23
28
  }
24
29
  }
25
30
 
package/CHANGELOG.md CHANGED
@@ -1,19 +1,11 @@
1
- ## [1.10.0](https://github.com/caioimori/sinapse-ai/compare/1.9.1...1.10.0) (2026-06-18)
2
-
3
- ### Features
4
-
5
- * **article-vii:** guarda contagem de artigos da Constitution contra drift ([c010fda](https://github.com/caioimori/sinapse-ai/commit/c010fda484a8d2eb0292ee0c583a60ae1d13a745))
6
- * **cli:** torna todos os comandos descobriveis no --help + guard de regressao ([1eba7d5](https://github.com/caioimori/sinapse-ai/commit/1eba7d5bb746dd241282e5d33aaa890f52d6d156))
1
+ ## [1.11.1](https://github.com/caioimori/sinapse-ai/compare/1.11.0...1.11.1) (2026-06-18)
7
2
 
8
3
  ### Bug Fixes
9
4
 
10
- * **install:** reinstall preserva arquivos L3 user-owned (core-config, MEMORY.md) ([b2ab1a5](https://github.com/caioimori/sinapse-ai/commit/b2ab1a56025f12fc9a2123355541eaa41cbbf74b))
11
- * **security:** corrige 2 vulns moderadas que chegam a quem instala (js-yaml, tar) ([947694b](https://github.com/caioimori/sinapse-ai/commit/947694b8eee3f6ad6da6bb342a73c78fe8ab2658))
12
- * **security:** elimina interpolacao de shell no setx PATH do install (Windows) ([a4e9cae](https://github.com/caioimori/sinapse-ai/commit/a4e9caeda475b5873169151f811aa1ed92ff8181))
13
-
14
- ### Documentation
15
-
16
- * corrige contagem da Constitution no README (10->11 artigos, 6->7 NON-NEGOTIABLE) ([40713a5](https://github.com/caioimori/sinapse-ai/commit/40713a51dceda3477fd4b33750e4cfe188cff086))
5
+ * **deps:** resolve 9 alertas dependabot sem quebrar nada (prod+dev) ([2d3c07d](https://github.com/caioimori/sinapse-ai/commit/2d3c07d1467ba8020a222ccaa6110a4addbc8ae9))
6
+ * **greeting:** normaliza id longo do agente para sugestao de proximo-passo ([f82bfe0](https://github.com/caioimori/sinapse-ai/commit/f82bfe00509ba68385cab702967ba09c1b38acae))
7
+ * **greeting:** normaliza id longo tambem no gating do modo bob ([6974f14](https://github.com/caioimori/sinapse-ai/commit/6974f14a79f8156052b5866e0eb2eaabf83aed37))
8
+ * **ide-sync:** commita espelho Claude (squad orqx) p/ destravar parity gate ([35909f1](https://github.com/caioimori/sinapse-ai/commit/35909f1754155779609bb2dbba9534a990e60d62))
17
9
 
18
10
  # Changelog
19
11
 
package/bin/sinapse.js CHANGED
@@ -28,7 +28,41 @@ const args = process.argv.slice(2);
28
28
  const command = args[0];
29
29
 
30
30
  // Helper: Run initialization wizard
31
+ /**
32
+ * Fail fast with an actionable message if the Node.js runtime is older than the
33
+ * `engines.node` requirement. Without this, an old Node gets a cryptic error
34
+ * deep inside the wizard (syntax/API failure) instead of a clear "upgrade Node"
35
+ * message at the door. Uses semver when available, else a major-version fallback
36
+ * so a missing dependency never blocks the check.
37
+ */
38
+ function nodeSatisfies(currentVersion, required) {
39
+ // Major-version fallback (used if semver is unavailable in the runtime).
40
+ const m = String(required).match(/(\d+)/);
41
+ const minMajor = m ? parseInt(m[1], 10) : 18;
42
+ let satisfied = parseInt(String(currentVersion).replace(/^v/, '').split('.')[0], 10) >= minMajor;
43
+ try {
44
+ satisfied = require('semver').satisfies(currentVersion, required, { includePrerelease: true });
45
+ } catch {
46
+ // semver unavailable — keep the major-version fallback computed above.
47
+ }
48
+ return satisfied;
49
+ }
50
+
51
+ function checkNodePrerequisites() {
52
+ const required = (packageJson.engines && packageJson.engines.node) || '>=18.0.0';
53
+ if (!nodeSatisfies(process.version, required)) {
54
+ logger.error(`\n❌ Node.js ${process.version} does not meet SINAPSE's requirement (Node ${required}).`);
55
+ logger.error(' How to fix:');
56
+ logger.error(' 1. Install the Node.js LTS from https://nodejs.org/');
57
+ logger.error(' 2. Reopen your terminal and run the command again.\n');
58
+ process.exit(1);
59
+ }
60
+ }
61
+
31
62
  async function runWizard(options = {}) {
63
+ // Prerequisite gate (Node version) before any install/init work.
64
+ checkNodePrerequisites();
65
+
32
66
  // Use the v4 wizard from packages/installer/src/wizard/index.js
33
67
  const wizardPath = path.join(__dirname, '..', 'packages', 'installer', 'src', 'wizard', 'index.js');
34
68
 
@@ -1383,8 +1417,13 @@ async function main() {
1383
1417
  }
1384
1418
  }
1385
1419
 
1386
- // Execute main function
1387
- main().catch((error) => {
1388
- logger.error('❌ Fatal error:', error.message);
1389
- process.exit(1);
1390
- });
1420
+ // Execute main function (only when run directly, so the module can be required
1421
+ // in tests without launching the CLI).
1422
+ if (require.main === module) {
1423
+ main().catch((error) => {
1424
+ logger.error('❌ Fatal error:', error.message);
1425
+ process.exit(1);
1426
+ });
1427
+ }
1428
+
1429
+ module.exports = { nodeSatisfies };
@@ -69,7 +69,13 @@ const NAMED_PATTERNS = [
69
69
  { name: 'Supabase DB URL', pattern: /postgresql:\/\/postgres\.[A-Za-z0-9]+:[^@\s]+@/i, credentialPlaceholderGated: true },
70
70
 
71
71
  // Generic Patterns (broader, lower confidence — placeholder-allowlisted)
72
- { name: 'Hardcoded Password', pattern: /(?:password|passwd|pwd)\s*[=:]\s*['"][^'"]{8,}['"]/i, lowConfidence: true },
72
+ // Value class excludes whitespace (same rationale as the connection strings
73
+ // above): real password values are space-free tokens. The old `[^'"]{8,}`
74
+ // matched human UI labels whose i18n key ends in "Password" followed by a
75
+ // sentence value, false-positiving on EVERY edit to a locale file. The
76
+ // whitespace-excluding class still catches space-free hardcoded passwords,
77
+ // including camelCase-keyed ones.
78
+ { name: 'Hardcoded Password', pattern: /(?:password|passwd|pwd)\s*[=:]\s*['"][^'"\s]{8,}['"]/i, lowConfidence: true },
73
79
  { name: 'Bearer Token', pattern: /[Bb]earer\s+[A-Za-z0-9_\-.]{20,}/, entropyGated: true, lowConfidence: true },
74
80
  { name: 'Basic Auth', pattern: /[Bb]asic\s+[A-Za-z0-9+/=]{20,}/, lowConfidence: true },
75
81
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sinapse-ai",
3
- "version": "1.10.0",
3
+ "version": "1.11.1",
4
4
  "description": "SINAPSE AI: Framework de orquestracao de IA — 17 squads, 172 agentes especializados",
5
5
  "bin": {
6
6
  "sinapse": "bin/sinapse.js",
@@ -145,7 +145,7 @@
145
145
  "glob": "^10.4.4",
146
146
  "handlebars": "^4.7.8",
147
147
  "inquirer": "^8.2.6",
148
- "js-yaml": "^4.1.0",
148
+ "js-yaml": "^4.2.0",
149
149
  "ora": "^5.4.1",
150
150
  "proper-lockfile": "^4.1.2",
151
151
  "semver": "^7.7.2",
@@ -221,6 +221,8 @@
221
221
  "picomatch": "^4.0.4",
222
222
  "brace-expansion": "^5.0.6",
223
223
  "fast-uri": "^3.1.2",
224
- "ip-address": "^10.1.1"
224
+ "ip-address": "^10.1.1",
225
+ "@babel/core": "^7.29.6",
226
+ "js-yaml": "^4.2.0"
225
227
  }
226
228
  }
@@ -168,12 +168,20 @@ function showCompletion(context = {}) {
168
168
  startCommand = t('startCommandClaude');
169
169
  }
170
170
 
171
+ // Honest completion: only claim "ready" when dependencies actually installed.
172
+ const depsInstalled = context.depsInstalled !== false;
173
+
171
174
  console.log('\n' + headings.divider());
172
175
  console.log('');
173
176
  console.log(status.success(t('completionInstalled')));
174
177
  console.log(status.success(`${llmLabel} ${t('completionConfigured')}`));
175
- console.log(status.success(`200 ${t('completionAgents')}`));
176
- console.log(status.success(`${t('completionReady')} ${startCommand}`));
178
+ console.log(status.success(`172 ${t('completionAgents')}`));
179
+ if (depsInstalled) {
180
+ console.log(status.success(`${t('completionReady')} ${startCommand}`));
181
+ } else {
182
+ console.log(status.warning(t('completionDepsMissing')));
183
+ console.log(status.info(`${t('completionReady')} ${startCommand}`));
184
+ }
177
185
  console.log('');
178
186
  console.log(headings.divider() + '\n');
179
187
  }
@@ -70,6 +70,7 @@ const TRANSLATIONS = {
70
70
  completionConfigured: 'configured',
71
71
  completionAgents: 'agents available',
72
72
  completionReady: 'Ready!',
73
+ completionDepsMissing: 'Dependencies were not installed. Run `npm install` in this project before using it.',
73
74
  startCommandClaude: "Type 'sinapse' in terminal to start.",
74
75
  startCommandCodex: "Type 'codex' in terminal to start.",
75
76
  startCommandBoth: "Type 'sinapse' (Claude) or 'codex' (Codex) in terminal to start.",
@@ -253,6 +254,7 @@ const TRANSLATIONS = {
253
254
  completionConfigured: 'configurado',
254
255
  completionAgents: 'agentes disponiveis',
255
256
  completionReady: 'Pronto!',
257
+ completionDepsMissing: 'As dependencias nao foram instaladas. Rode `npm install` neste projeto antes de usar.',
256
258
  startCommandClaude: "Digite 'sinapse' no terminal para comecar.",
257
259
  startCommandCodex: "Digite 'codex' no terminal para comecar.",
258
260
  startCommandBoth: "Digite 'sinapse' (Claude) ou 'codex' (Codex) no terminal para comecar.",
@@ -1211,8 +1211,12 @@ async function runWizard(options = {}) {
1211
1211
  answers.infraApplied = false;
1212
1212
  }
1213
1213
 
1214
- // Show completion with LLM label
1215
- showCompletion({ llmLabel: llmLabel(answers.selectedLLM), llmValue: answers.selectedLLM });
1214
+ // Show completion with LLM label + honest dependency status
1215
+ showCompletion({
1216
+ llmLabel: llmLabel(answers.selectedLLM),
1217
+ llmValue: answers.selectedLLM,
1218
+ depsInstalled: answers.depsInstalled !== false,
1219
+ });
1216
1220
 
1217
1221
  return answers;
1218
1222
  } catch (error) {