nexus-agents 8.78.1 → 8.80.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 (129) hide show
  1. package/dist/{ast-rule-runner-U5N43D4U.js → ast-rule-runner-WBNQ4W7B.js} +3 -3
  2. package/dist/{child-mcp-config-IRZHH2TU.js → child-mcp-config-TB32BPW5.js} +2 -2
  3. package/dist/{chunk-7RCC7WGS.js → chunk-3HGN74IJ.js} +2 -2
  4. package/dist/{chunk-YB5MS4JH.js → chunk-6JMKAMIS.js} +2 -2
  5. package/dist/{chunk-T63EIQYI.js → chunk-6VWD7DRE.js} +2 -2
  6. package/dist/{chunk-Q6JZQWQB.js → chunk-ABUPISMJ.js} +4 -4
  7. package/dist/{chunk-LIVTFARG.js → chunk-C54ZYD3A.js} +2 -2
  8. package/dist/{chunk-5CIP4EWI.js → chunk-CAKY3YPI.js} +20 -5
  9. package/dist/chunk-CAKY3YPI.js.map +1 -0
  10. package/dist/{chunk-EMWRUQQS.js → chunk-CURDI25L.js} +5 -5
  11. package/dist/{chunk-33HHRRKZ.js → chunk-E56PLS6D.js} +41 -28
  12. package/dist/chunk-E56PLS6D.js.map +1 -0
  13. package/dist/{chunk-4FDESAVV.js → chunk-ECLPQMUB.js} +3 -3
  14. package/dist/{chunk-YUDJV6JF.js → chunk-ELYWRZPD.js} +4 -4
  15. package/dist/{chunk-HLIE3734.js → chunk-FN43725K.js} +52 -15
  16. package/dist/chunk-FN43725K.js.map +1 -0
  17. package/dist/{chunk-NEIPHVTA.js → chunk-G6QIL77O.js} +2 -2
  18. package/dist/{chunk-AE2U6NUZ.js → chunk-G7IKDIHG.js} +2 -2
  19. package/dist/{chunk-BLSQNFMS.js → chunk-HVS6NEOI.js} +3 -3
  20. package/dist/{chunk-J76ZM6QF.js → chunk-IMWA6UIZ.js} +2 -2
  21. package/dist/{chunk-CMZPHXDH.js → chunk-J3CWUE35.js} +2 -2
  22. package/dist/{chunk-PSCY6MSD.js → chunk-MN2IFJCV.js} +4 -4
  23. package/dist/{chunk-GHNHZSDW.js → chunk-MRK3TVZQ.js} +7 -7
  24. package/dist/{chunk-XQ34WJOM.js → chunk-MXAQRDPB.js} +2 -2
  25. package/dist/{chunk-BGKG32VV.js → chunk-OIRYBDAY.js} +10 -10
  26. package/dist/{chunk-AVEDKF3J.js → chunk-OMNYIKT2.js} +2 -2
  27. package/dist/{chunk-WUN3IB3T.js → chunk-OT2PRNLG.js} +2 -2
  28. package/dist/{chunk-HVEPFGQC.js → chunk-P5PEIZDT.js} +36 -36
  29. package/dist/{chunk-WABZQ477.js → chunk-P7ICWY4J.js} +4 -4
  30. package/dist/{chunk-UW4I34IW.js → chunk-PQQWP3D7.js} +3 -3
  31. package/dist/{chunk-ACXBBUW3.js → chunk-QXULJBP2.js} +2 -2
  32. package/dist/{chunk-DWQ7TG5L.js → chunk-RUL5I2UB.js} +2 -2
  33. package/dist/{chunk-SKAPTWVH.js → chunk-RVMOIMKD.js} +3 -3
  34. package/dist/{chunk-F7R2E74V.js → chunk-SLH6AXGK.js} +2 -2
  35. package/dist/{chunk-UNPDTD6N.js → chunk-VEEBF4TY.js} +2 -2
  36. package/dist/{chunk-OZFXXGGZ.js → chunk-VXJO6GKP.js} +5 -5
  37. package/dist/{chunk-VFFG3HIY.js → chunk-W2BS4OEF.js} +2 -2
  38. package/dist/{chunk-QNRB5U7W.js → chunk-XTBRYXQ3.js} +2 -2
  39. package/dist/{cli-circuit-breaker-DJU6WTWT.js → cli-circuit-breaker-GI3XO3KY.js} +3 -3
  40. package/dist/cli.d.ts +1 -1
  41. package/dist/cli.js +42 -42
  42. package/dist/{composite-router-F3D2QRHI.js → composite-router-I7IFJ5KZ.js} +2 -2
  43. package/dist/{consensus-vote-F232OHJH.js → consensus-vote-562LVBTG.js} +16 -16
  44. package/dist/{consensus-vote-types-CjV_hgDK.d.ts → consensus-vote-types-B4e7bt34.d.ts} +17 -1
  45. package/dist/{context-retriever-J24ZMIZG.js → context-retriever-Y52C6VNU.js} +8 -8
  46. package/dist/{doctor-deep-WWOPRJJS.js → doctor-deep-VR5KYAY6.js} +3 -3
  47. package/dist/{doctor-live-55CKYQ6V.js → doctor-live-SWQC7LEQ.js} +10 -10
  48. package/dist/{expert-bridge-5MFBN4ZW.js → expert-bridge-ARAJKDJ4.js} +4 -4
  49. package/dist/{factory-3ZA63QDH.js → factory-DY6VTFH5.js} +9 -9
  50. package/dist/{factory-TXEYHBQV.js → factory-ONHL5U5H.js} +5 -5
  51. package/dist/{improvement-review-ATTDLEBX.js → improvement-review-MT3YYRMQ.js} +5 -5
  52. package/dist/index.d.ts +8 -2
  53. package/dist/index.js +30 -30
  54. package/dist/{init-opencode-R5JTQZG5.js → init-opencode-RNDSFHBF.js} +5 -5
  55. package/dist/issue-triage-FDEDC6XZ.js +16 -0
  56. package/dist/{pr-reviewer-helpers-HRM74BLX.js → pr-reviewer-helpers-CMAJDX2H.js} +4 -4
  57. package/dist/{registry-command-ZPKPR6WV.js → registry-command-22GYK4DX.js} +2 -2
  58. package/dist/{repo-security-plan-LXKTNEGB.js → repo-security-plan-AXS2VFES.js} +3 -3
  59. package/dist/{research-helpers-synthesize-FZLLZSJM.js → research-helpers-synthesize-RHDOVMBS.js} +4 -4
  60. package/dist/{routing-memory-35Z7UVYC.js → routing-memory-ACDBGC3N.js} +2 -2
  61. package/dist/{session-memory-G7VGV2SC.js → session-memory-QHCC5Y3X.js} +3 -3
  62. package/dist/{setup-config-KLKXB2LM.js → setup-config-LFCOSUQO.js} +3 -3
  63. package/dist/{setup-custom-api-TJMRUQFK.js → setup-custom-api-LUARV73X.js} +4 -4
  64. package/dist/setup-data-dir-2G242K7M.js +30 -0
  65. package/dist/{tool-memory-65MWYDEP.js → tool-memory-GN6I5MC2.js} +5 -5
  66. package/dist/{unified-registry-2HCLBGWM.js → unified-registry-ZWF7T6CK.js} +10 -10
  67. package/dist/{weather-report-RMRBC6LH.js → weather-report-GOKIMPQU.js} +2 -2
  68. package/package.json +1 -1
  69. package/dist/chunk-33HHRRKZ.js.map +0 -1
  70. package/dist/chunk-5CIP4EWI.js.map +0 -1
  71. package/dist/chunk-HLIE3734.js.map +0 -1
  72. package/dist/issue-triage-M7XEMQZ7.js +0 -16
  73. package/dist/setup-data-dir-BXGHZ53Y.js +0 -30
  74. /package/dist/{ast-rule-runner-U5N43D4U.js.map → ast-rule-runner-WBNQ4W7B.js.map} +0 -0
  75. /package/dist/{child-mcp-config-IRZHH2TU.js.map → child-mcp-config-TB32BPW5.js.map} +0 -0
  76. /package/dist/{chunk-7RCC7WGS.js.map → chunk-3HGN74IJ.js.map} +0 -0
  77. /package/dist/{chunk-YB5MS4JH.js.map → chunk-6JMKAMIS.js.map} +0 -0
  78. /package/dist/{chunk-T63EIQYI.js.map → chunk-6VWD7DRE.js.map} +0 -0
  79. /package/dist/{chunk-Q6JZQWQB.js.map → chunk-ABUPISMJ.js.map} +0 -0
  80. /package/dist/{chunk-LIVTFARG.js.map → chunk-C54ZYD3A.js.map} +0 -0
  81. /package/dist/{chunk-EMWRUQQS.js.map → chunk-CURDI25L.js.map} +0 -0
  82. /package/dist/{chunk-4FDESAVV.js.map → chunk-ECLPQMUB.js.map} +0 -0
  83. /package/dist/{chunk-YUDJV6JF.js.map → chunk-ELYWRZPD.js.map} +0 -0
  84. /package/dist/{chunk-NEIPHVTA.js.map → chunk-G6QIL77O.js.map} +0 -0
  85. /package/dist/{chunk-AE2U6NUZ.js.map → chunk-G7IKDIHG.js.map} +0 -0
  86. /package/dist/{chunk-BLSQNFMS.js.map → chunk-HVS6NEOI.js.map} +0 -0
  87. /package/dist/{chunk-J76ZM6QF.js.map → chunk-IMWA6UIZ.js.map} +0 -0
  88. /package/dist/{chunk-CMZPHXDH.js.map → chunk-J3CWUE35.js.map} +0 -0
  89. /package/dist/{chunk-PSCY6MSD.js.map → chunk-MN2IFJCV.js.map} +0 -0
  90. /package/dist/{chunk-GHNHZSDW.js.map → chunk-MRK3TVZQ.js.map} +0 -0
  91. /package/dist/{chunk-XQ34WJOM.js.map → chunk-MXAQRDPB.js.map} +0 -0
  92. /package/dist/{chunk-BGKG32VV.js.map → chunk-OIRYBDAY.js.map} +0 -0
  93. /package/dist/{chunk-AVEDKF3J.js.map → chunk-OMNYIKT2.js.map} +0 -0
  94. /package/dist/{chunk-WUN3IB3T.js.map → chunk-OT2PRNLG.js.map} +0 -0
  95. /package/dist/{chunk-HVEPFGQC.js.map → chunk-P5PEIZDT.js.map} +0 -0
  96. /package/dist/{chunk-WABZQ477.js.map → chunk-P7ICWY4J.js.map} +0 -0
  97. /package/dist/{chunk-UW4I34IW.js.map → chunk-PQQWP3D7.js.map} +0 -0
  98. /package/dist/{chunk-ACXBBUW3.js.map → chunk-QXULJBP2.js.map} +0 -0
  99. /package/dist/{chunk-DWQ7TG5L.js.map → chunk-RUL5I2UB.js.map} +0 -0
  100. /package/dist/{chunk-SKAPTWVH.js.map → chunk-RVMOIMKD.js.map} +0 -0
  101. /package/dist/{chunk-F7R2E74V.js.map → chunk-SLH6AXGK.js.map} +0 -0
  102. /package/dist/{chunk-UNPDTD6N.js.map → chunk-VEEBF4TY.js.map} +0 -0
  103. /package/dist/{chunk-OZFXXGGZ.js.map → chunk-VXJO6GKP.js.map} +0 -0
  104. /package/dist/{chunk-VFFG3HIY.js.map → chunk-W2BS4OEF.js.map} +0 -0
  105. /package/dist/{chunk-QNRB5U7W.js.map → chunk-XTBRYXQ3.js.map} +0 -0
  106. /package/dist/{cli-circuit-breaker-DJU6WTWT.js.map → cli-circuit-breaker-GI3XO3KY.js.map} +0 -0
  107. /package/dist/{composite-router-F3D2QRHI.js.map → composite-router-I7IFJ5KZ.js.map} +0 -0
  108. /package/dist/{consensus-vote-F232OHJH.js.map → consensus-vote-562LVBTG.js.map} +0 -0
  109. /package/dist/{context-retriever-J24ZMIZG.js.map → context-retriever-Y52C6VNU.js.map} +0 -0
  110. /package/dist/{doctor-deep-WWOPRJJS.js.map → doctor-deep-VR5KYAY6.js.map} +0 -0
  111. /package/dist/{doctor-live-55CKYQ6V.js.map → doctor-live-SWQC7LEQ.js.map} +0 -0
  112. /package/dist/{expert-bridge-5MFBN4ZW.js.map → expert-bridge-ARAJKDJ4.js.map} +0 -0
  113. /package/dist/{factory-3ZA63QDH.js.map → factory-DY6VTFH5.js.map} +0 -0
  114. /package/dist/{factory-TXEYHBQV.js.map → factory-ONHL5U5H.js.map} +0 -0
  115. /package/dist/{improvement-review-ATTDLEBX.js.map → improvement-review-MT3YYRMQ.js.map} +0 -0
  116. /package/dist/{init-opencode-R5JTQZG5.js.map → init-opencode-RNDSFHBF.js.map} +0 -0
  117. /package/dist/{issue-triage-M7XEMQZ7.js.map → issue-triage-FDEDC6XZ.js.map} +0 -0
  118. /package/dist/{pr-reviewer-helpers-HRM74BLX.js.map → pr-reviewer-helpers-CMAJDX2H.js.map} +0 -0
  119. /package/dist/{registry-command-ZPKPR6WV.js.map → registry-command-22GYK4DX.js.map} +0 -0
  120. /package/dist/{repo-security-plan-LXKTNEGB.js.map → repo-security-plan-AXS2VFES.js.map} +0 -0
  121. /package/dist/{research-helpers-synthesize-FZLLZSJM.js.map → research-helpers-synthesize-RHDOVMBS.js.map} +0 -0
  122. /package/dist/{routing-memory-35Z7UVYC.js.map → routing-memory-ACDBGC3N.js.map} +0 -0
  123. /package/dist/{session-memory-G7VGV2SC.js.map → session-memory-QHCC5Y3X.js.map} +0 -0
  124. /package/dist/{setup-config-KLKXB2LM.js.map → setup-config-LFCOSUQO.js.map} +0 -0
  125. /package/dist/{setup-custom-api-TJMRUQFK.js.map → setup-custom-api-LUARV73X.js.map} +0 -0
  126. /package/dist/{setup-data-dir-BXGHZ53Y.js.map → setup-data-dir-2G242K7M.js.map} +0 -0
  127. /package/dist/{tool-memory-65MWYDEP.js.map → tool-memory-GN6I5MC2.js.map} +0 -0
  128. /package/dist/{unified-registry-2HCLBGWM.js.map → unified-registry-ZWF7T6CK.js.map} +0 -0
  129. /package/dist/{weather-report-RMRBC6LH.js.map → weather-report-GOKIMPQU.js.map} +0 -0
@@ -9,8 +9,8 @@ import {
9
9
  getBuiltInAstRulesPath,
10
10
  loadRules,
11
11
  runAstQaRules
12
- } from "./chunk-LIVTFARG.js";
13
- import "./chunk-5CIP4EWI.js";
12
+ } from "./chunk-C54ZYD3A.js";
13
+ import "./chunk-CAKY3YPI.js";
14
14
  import "./chunk-4UHDDCRB.js";
15
15
  import "./chunk-RNDHNRSX.js";
16
16
  import "./chunk-PX6F3LHL.js";
@@ -26,4 +26,4 @@ export {
26
26
  loadRules,
27
27
  runAstQaRules
28
28
  };
29
- //# sourceMappingURL=ast-rule-runner-U5N43D4U.js.map
29
+ //# sourceMappingURL=ast-rule-runner-WBNQ4W7B.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-HERI7LXN.js";
4
4
  import {
5
5
  createLogger
6
- } from "./chunk-5CIP4EWI.js";
6
+ } from "./chunk-CAKY3YPI.js";
7
7
  import "./chunk-4UHDDCRB.js";
8
8
  import "./chunk-RNDHNRSX.js";
9
9
  import "./chunk-PX6F3LHL.js";
@@ -60,4 +60,4 @@ export {
60
60
  generateMcpConfig,
61
61
  getDefaultAllowedTools
62
62
  };
63
- //# sourceMappingURL=child-mcp-config-IRZHH2TU.js.map
63
+ //# sourceMappingURL=child-mcp-config-TB32BPW5.js.map
@@ -10,7 +10,7 @@ import {
10
10
  isRateLimitText,
11
11
  observedArmDisplaySlot,
12
12
  ok
13
- } from "./chunk-5CIP4EWI.js";
13
+ } from "./chunk-CAKY3YPI.js";
14
14
 
15
15
  // src/cli-adapters/circuit-breaker-types.ts
16
16
  var CircuitErrorCode = {
@@ -592,4 +592,4 @@ export {
592
592
  CliCircuitBreakerIntegration,
593
593
  createCliCircuitBreakerIntegration
594
594
  };
595
- //# sourceMappingURL=chunk-7RCC7WGS.js.map
595
+ //# sourceMappingURL=chunk-3HGN74IJ.js.map
@@ -1,6 +1,6 @@
1
1
  // src/version.ts
2
2
  import semver from "semver";
3
- var VERSION = true ? "8.78.1" : "dev";
3
+ var VERSION = true ? "8.80.0" : "dev";
4
4
  var NODE_ENGINE_RANGE = ">=22.5.0";
5
5
  function isNodeVersionSupported(version) {
6
6
  return semver.satisfies(version, NODE_ENGINE_RANGE);
@@ -11,4 +11,4 @@ export {
11
11
  NODE_ENGINE_RANGE,
12
12
  isNodeVersionSupported
13
13
  };
14
- //# sourceMappingURL=chunk-YB5MS4JH.js.map
14
+ //# sourceMappingURL=chunk-6JMKAMIS.js.map
@@ -2,7 +2,7 @@ import {
2
2
  TASK_CATEGORIES,
3
3
  getAdaptiveBonus,
4
4
  getOutcomeStore
5
- } from "./chunk-5CIP4EWI.js";
5
+ } from "./chunk-CAKY3YPI.js";
6
6
 
7
7
  // src/cli/doctor-deep.ts
8
8
  var CLI_NAMES = ["claude", "gemini", "codex", "opencode"];
@@ -106,4 +106,4 @@ export {
106
106
  runDeepDiagnostics,
107
107
  formatDeepDiagnostics
108
108
  };
109
- //# sourceMappingURL=chunk-T63EIQYI.js.map
109
+ //# sourceMappingURL=chunk-6VWD7DRE.js.map
@@ -4,12 +4,12 @@ import {
4
4
  planOptionalParams,
5
5
  requireApiKey,
6
6
  validateApiKeyPresence
7
- } from "./chunk-XQ34WJOM.js";
7
+ } from "./chunk-MXAQRDPB.js";
8
8
  import {
9
9
  assertCustomApiHostResolvesPublic,
10
10
  hostnameOf,
11
11
  redactApiKey
12
- } from "./chunk-ACXBBUW3.js";
12
+ } from "./chunk-QXULJBP2.js";
13
13
  import {
14
14
  ConfigError,
15
15
  DEFAULT_OPENAI_COMPAT_ENDPOINT,
@@ -27,7 +27,7 @@ import {
27
27
  isEndpointArmId,
28
28
  ok,
29
29
  recordUsageEvent
30
- } from "./chunk-5CIP4EWI.js";
30
+ } from "./chunk-CAKY3YPI.js";
31
31
 
32
32
  // src/adapters/openai-types.ts
33
33
  var OPENAI_MODELS = {
@@ -871,4 +871,4 @@ export {
871
871
  discoverModels,
872
872
  buildOpenAICompatAdapters
873
873
  };
874
- //# sourceMappingURL=chunk-Q6JZQWQB.js.map
874
+ //# sourceMappingURL=chunk-ABUPISMJ.js.map
@@ -3,7 +3,7 @@ import {
3
3
  ValidationError,
4
4
  createLogger,
5
5
  formatZodError
6
- } from "./chunk-5CIP4EWI.js";
6
+ } from "./chunk-CAKY3YPI.js";
7
7
 
8
8
  // src/security/ast-rule-runner.ts
9
9
  import { existsSync } from "node:fs";
@@ -241,4 +241,4 @@ export {
241
241
  collectAstQaFindings,
242
242
  runAstQaRules
243
243
  };
244
- //# sourceMappingURL=chunk-LIVTFARG.js.map
244
+ //# sourceMappingURL=chunk-C54ZYD3A.js.map
@@ -2628,7 +2628,7 @@ function setDefaultRegistry(registry) {
2628
2628
  }
2629
2629
  async function reloadDefaultRegistry() {
2630
2630
  globalRegistry = buildDefaultRegistry();
2631
- const { resetGlobalRegistry } = await import("./unified-registry-2HCLBGWM.js");
2631
+ const { resetGlobalRegistry } = await import("./unified-registry-ZWF7T6CK.js");
2632
2632
  resetGlobalRegistry();
2633
2633
  return globalRegistry;
2634
2634
  }
@@ -13025,6 +13025,16 @@ var JsonlStore = class {
13025
13025
  // src/observability/decision-cost.ts
13026
13026
  import { z as z18 } from "zod";
13027
13027
  var UNKNOWN_MODEL = "unknown";
13028
+ var UNDECLARED_OPTIONS_EXCERPT_CHARS = 120;
13029
+ var UndeclaredOptionsDetectorSchema = z18.object({
13030
+ fired: z18.boolean(),
13031
+ /** The matching regex as written, flags included; absent when not fired. */
13032
+ pattern: z18.string().min(1).max(200).optional(),
13033
+ /** Window around the match from the FULL proposal; absent when not fired. */
13034
+ excerpt: z18.string().max(UNDECLARED_OPTIONS_EXCERPT_CHARS).optional(),
13035
+ /** How many `options` the caller declared (0 when none). */
13036
+ declaredOptionCount: z18.number().int().nonnegative()
13037
+ });
13028
13038
  var DecisionCostSummarySchema = z18.object({
13029
13039
  billingMode: z18.enum(["plan", "api"]),
13030
13040
  voterCount: z18.number(),
@@ -13201,7 +13211,9 @@ var DecisionCostRecordSchema = z19.object({
13201
13211
  /** ISO 8601 timestamp the rollup was recorded. */
13202
13212
  timestamp: z19.string().min(1).max(40),
13203
13213
  /** The rolled-up cost summary. */
13204
- summary: DecisionCostSummarySchema2
13214
+ summary: DecisionCostSummarySchema2,
13215
+ /** #5422 — optional: absent means no verdict was recorded, not "not fired". */
13216
+ undeclaredOptionsDetector: UndeclaredOptionsDetectorSchema.optional()
13205
13217
  });
13206
13218
  var MAX_DECISION_COST_RECORDS = 5e3;
13207
13219
  var DecisionCostStore = class {
@@ -13235,7 +13247,9 @@ var DecisionCostStore = class {
13235
13247
  decisionId: input.decisionId,
13236
13248
  gate: input.gate,
13237
13249
  timestamp: input.timestamp,
13238
- summary
13250
+ summary,
13251
+ // Spread conditionally so an absent verdict stays absent on disk (#5422).
13252
+ ...input.undeclaredOptionsDetector !== void 0 ? { undeclaredOptionsDetector: input.undeclaredOptionsDetector } : {}
13239
13253
  };
13240
13254
  const persisted = this.store.append(record);
13241
13255
  return { record, persisted };
@@ -15897,7 +15911,7 @@ var CompositeRouter = class _CompositeRouter {
15897
15911
  */
15898
15912
  async consultUnifiedContext(task) {
15899
15913
  try {
15900
- const { getContextForTask, inferTaskCategory } = await import("./context-retriever-J24ZMIZG.js");
15914
+ const { getContextForTask, inferTaskCategory } = await import("./context-retriever-Y52C6VNU.js");
15901
15915
  const ctx = await getContextForTask({
15902
15916
  task: task.content,
15903
15917
  category: inferTaskCategory(task.content),
@@ -17503,6 +17517,7 @@ export {
17503
17517
  getHeartbeatMonitor,
17504
17518
  runInHeartbeatSession,
17505
17519
  JsonlStore,
17520
+ UNDECLARED_OPTIONS_EXCERPT_CHARS,
17506
17521
  DecisionCostSummarySchema,
17507
17522
  DecisionCostStore,
17508
17523
  AUTHORITY_TIERS,
@@ -17524,4 +17539,4 @@ export {
17524
17539
  AgentCapability,
17525
17540
  OrchestratorError
17526
17541
  };
17527
- //# sourceMappingURL=chunk-5CIP4EWI.js.map
17542
+ //# sourceMappingURL=chunk-CAKY3YPI.js.map