@atlassian/chippy 0.0.0-stage → 0.0.1-beta.2

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 (133) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +276 -2
  3. package/bin/chippy.mjs +92 -0
  4. package/bin/pack.mjs +204 -0
  5. package/bin/skill-dir.mjs +15 -0
  6. package/lib/avalanche.js +2601 -0
  7. package/lib/avalanche.js.map +7 -0
  8. package/lib/bootstrap.d.ts +1 -0
  9. package/lib/bootstrap.js +70 -0
  10. package/lib/bootstrap.js.map +7 -0
  11. package/lib/browser.js +15 -0
  12. package/lib/browser.js.map +7 -0
  13. package/lib/extension/avalanche.es.js +5535 -0
  14. package/lib/extension/avalanche.es.js.map +1 -0
  15. package/lib/extension/chippy-page-bridge.js +1953 -0
  16. package/lib/extension/inspect-react.js +216 -0
  17. package/lib/extension/layout-lab.js +1453 -0
  18. package/lib/extension/panel-dom.js +90 -0
  19. package/lib/extension/resolve-probes.js +342 -0
  20. package/lib/mcp-skill/LICENSE +201 -0
  21. package/lib/mcp-skill/README.md +148 -0
  22. package/lib/mcp-skill/SKILL.md +335 -0
  23. package/lib/mcp-skill/browser-scripts/playwright-probes.js +368 -0
  24. package/lib/mcp-skill/browser-scripts/playwright-session.js +114 -0
  25. package/lib/mcp-skill/extension/armed-reload-startup.js +83 -0
  26. package/lib/mcp-skill/extension/avalanche.es.js +5535 -0
  27. package/lib/mcp-skill/extension/avalanche.es.js.map +1 -0
  28. package/lib/mcp-skill/extension/avalanche.iife.js +5536 -0
  29. package/lib/mcp-skill/extension/avalanche.iife.js.map +1 -0
  30. package/lib/mcp-skill/extension/background.js +325 -0
  31. package/lib/mcp-skill/extension/chippy-page-bridge.js +1953 -0
  32. package/lib/mcp-skill/extension/content-script.js +190 -0
  33. package/lib/mcp-skill/extension/devtools-hook-shim.js +85 -0
  34. package/lib/mcp-skill/extension/early-bootstrap.js +49 -0
  35. package/lib/mcp-skill/extension/icon-128.png +0 -0
  36. package/lib/mcp-skill/extension/icon-16.png +0 -0
  37. package/lib/mcp-skill/extension/icon-32.png +0 -0
  38. package/lib/mcp-skill/extension/icon-48.png +0 -0
  39. package/lib/mcp-skill/extension/inspect-react.js +216 -0
  40. package/lib/mcp-skill/extension/layout-lab.js +1453 -0
  41. package/lib/mcp-skill/extension/logo.svg +14 -0
  42. package/lib/mcp-skill/extension/manifest.json +69 -0
  43. package/lib/mcp-skill/extension/panel-dom.js +90 -0
  44. package/lib/mcp-skill/extension/panel-settings.js +173 -0
  45. package/lib/mcp-skill/extension/popup.html +41 -0
  46. package/lib/mcp-skill/extension/popup.js +80 -0
  47. package/lib/mcp-skill/extension/probe-descriptor.js +241 -0
  48. package/lib/mcp-skill/extension/resolve-probes.js +342 -0
  49. package/lib/mcp-skill/extension/startup-handoff.js +30 -0
  50. package/lib/mcp-skill/package.json +1 -0
  51. package/lib/mcp-skill/references/README.md +56 -0
  52. package/lib/mcp-skill/references/active-stimulus.md +85 -0
  53. package/lib/mcp-skill/references/avalanche-detector.md +731 -0
  54. package/lib/mcp-skill/references/bdd-router.md +310 -0
  55. package/lib/mcp-skill/references/browser-runtime-api.md +193 -0
  56. package/lib/mcp-skill/references/command-output-formats.md +1085 -0
  57. package/lib/mcp-skill/references/command-surface.md +183 -0
  58. package/lib/mcp-skill/references/cynefin.md +99 -0
  59. package/lib/mcp-skill/references/debug-hook.md +161 -0
  60. package/lib/mcp-skill/references/fixing-performance.md +490 -0
  61. package/lib/mcp-skill/references/hook-metrics.md +199 -0
  62. package/lib/mcp-skill/references/hooks-inspection.md +61 -0
  63. package/lib/mcp-skill/references/jira-taxonomy.md +81 -0
  64. package/lib/mcp-skill/references/mcp.md +122 -0
  65. package/lib/mcp-skill/references/mode-a-injection.md +102 -0
  66. package/lib/mcp-skill/references/operating-model.md +128 -0
  67. package/lib/mcp-skill/references/playwright-cli-setup.md +105 -0
  68. package/lib/mcp-skill/references/playwright-probes.md +205 -0
  69. package/lib/mcp-skill/references/procedures.md +545 -0
  70. package/lib/mcp-skill/references/recipes.txt +114 -0
  71. package/lib/mcp-skill/references/stability-render.md +428 -0
  72. package/lib/mcp-skill/references/test-mode-playbook.md +194 -0
  73. package/lib/mcp-skill/references/troubleshooting.md +59 -0
  74. package/lib/mcp-skill/scripts/avalanche-analyze.cjs +495 -0
  75. package/lib/mcp-skill/scripts/build-avalanche-command.js +34 -0
  76. package/lib/mcp-skill/scripts/build-fiber-state-command.js +19 -0
  77. package/lib/mcp-skill/scripts/chippy-helper-server.js +1768 -0
  78. package/lib/mcp-skill/scripts/chippy-mcp.cjs +273 -0
  79. package/lib/mcp-skill/scripts/chippy.sh +1252 -0
  80. package/lib/mcp-skill/scripts/format-probe-result.js +34 -0
  81. package/lib/mcp-skill/scripts/helper-access.js +158 -0
  82. package/lib/mcp-skill/scripts/helper-proxy.js +87 -0
  83. package/lib/mcp-skill/scripts/page-socket-trust.js +81 -0
  84. package/lib/mcp-skill/scripts/probe-annotation-channel.js +116 -0
  85. package/lib/mcp-skill/scripts/search-recipes.js +248 -0
  86. package/lib/mcp-skill/snippets/README.md +89 -0
  87. package/lib/mcp-skill/snippets/count-context-consumers.js +40 -0
  88. package/lib/mcp-skill/snippets/find-context-providers.js +38 -0
  89. package/lib/mcp-skill/snippets/find-legacy-context.js +47 -0
  90. package/lib/mcp-skill/snippets/find-prop.js +83 -0
  91. package/lib/mcp-skill/snippets/hook-metrics-sample.js +69 -0
  92. package/lib/mcp-skill/snippets/hook-metrics.js +60 -0
  93. package/lib/mcp-skill/snippets/hook-tracker.js +198 -0
  94. package/lib/mcp-skill/snippets/stability-nudge.js +101 -0
  95. package/lib/package.json +1 -0
  96. package/lib/plugin.js +119 -0
  97. package/lib/plugin.js.map +7 -0
  98. package/lib/storybook/avalanche-panel-model.js +79 -0
  99. package/lib/storybook/brand.jsx +6 -0
  100. package/lib/storybook/connection-fallback.jsx +47 -0
  101. package/lib/storybook/constants.js +15 -0
  102. package/lib/storybook/context-card.jsx +171 -0
  103. package/lib/storybook/manager-owner.js +42 -0
  104. package/lib/storybook/manager.jsx +425 -0
  105. package/lib/storybook/preset.js +7 -0
  106. package/lib/storybook/preview.js +298 -0
  107. package/lib/storybook/probe-annotation-editor.jsx +52 -0
  108. package/lib/storybook/probe-intent.js +23 -0
  109. package/lib/storybook/setup.js +104 -0
  110. package/lib/types/avalanche/commit-metrics-adapter.d.ts +76 -0
  111. package/lib/types/avalanche/commit-stats-indices.d.ts +41 -0
  112. package/lib/types/avalanche/commit-surface-ownership.d.ts +9 -0
  113. package/lib/types/avalanche/detector.d.ts +183 -0
  114. package/lib/types/avalanche/interaction-capture.d.ts +25 -0
  115. package/lib/types/avalanche/internals.d.ts +189 -0
  116. package/lib/types/avalanche/report-serializer.d.ts +283 -0
  117. package/lib/types/avalanche/reporter.d.ts +610 -0
  118. package/lib/types/chippy-bridge/fiber-source.d.ts +48 -0
  119. package/lib/types/chippy-bridge/react-renderer.d.ts +74 -0
  120. package/lib/types/chippy-bridge/recorded-source.d.ts +44 -0
  121. package/lib/types/chippy-bridge/source-map.d.ts +30 -0
  122. package/lib/types/debug-render/core.d.ts +78 -0
  123. package/lib/types/layout-lab/fiber-boundaries.d.ts +51 -0
  124. package/lib/types/layout-lab/fiber-walk.d.ts +131 -0
  125. package/lib/types/layout-lab/marker-context.d.ts +94 -0
  126. package/lib/types/package/avalanche.d.ts +6 -0
  127. package/lib/types/package/browser.d.ts +10 -0
  128. package/lib/types/package/plugin.d.ts +15 -0
  129. package/lib/types/plugins/atl/commit-metrics-adapter.d.ts +65 -0
  130. package/lib/types/plugins/atl/metrics-slot.d.ts +37 -0
  131. package/lib/types/plugins/index.d.ts +49 -0
  132. package/lib/types/plugins/jira/context-provider.d.ts +36 -0
  133. package/package.json +106 -4
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,70 @@
1
+ // .agents/skills/chippy/extension/devtools-hook-shim.js
2
+ (function chippyDevtoolsHookShim(global) {
3
+ try {
4
+ let rootsFor2 = function(id) {
5
+ var roots = fiberRoots.get(id);
6
+ if (!roots) {
7
+ roots = /* @__PURE__ */ new Set();
8
+ fiberRoots.set(id, roots);
9
+ }
10
+ return roots;
11
+ };
12
+ var rootsFor = rootsFor2;
13
+ if (global.__REACT_DEVTOOLS_GLOBAL_HOOK__) return;
14
+ var renderers = /* @__PURE__ */ new Map();
15
+ var fiberRoots = /* @__PURE__ */ new Map();
16
+ var hook = {
17
+ __chippyShim: true,
18
+ supportsFiber: true,
19
+ renderers,
20
+ inject: function inject(renderer) {
21
+ var id = (renderers.size || 0) + 1;
22
+ renderers.set(id, renderer);
23
+ return id;
24
+ },
25
+ getFiberRoots: function getFiberRoots(id) {
26
+ return rootsFor2(id);
27
+ },
28
+ onScheduleFiberRoot: function() {
29
+ },
30
+ onCommitFiberRoot: function onCommitFiberRoot(id, root) {
31
+ if (!root || !root.current) return;
32
+ var roots = rootsFor2(id);
33
+ var state = root.current.memoizedState;
34
+ var unmounting = !state || state.element == null;
35
+ if (unmounting) roots.delete(root);
36
+ else roots.add(root);
37
+ },
38
+ onCommitFiberUnmount: function() {
39
+ },
40
+ onPostCommitFiberRoot: function() {
41
+ }
42
+ };
43
+ Object.defineProperty(global, "__REACT_DEVTOOLS_GLOBAL_HOOK__", {
44
+ configurable: true,
45
+ enumerable: true,
46
+ get: function() {
47
+ return hook;
48
+ },
49
+ set: function(next) {
50
+ if (next && typeof next === "object") {
51
+ if (!next.renderers || next.renderers.size === 0 && renderers.size > 0) {
52
+ try {
53
+ next.renderers = renderers;
54
+ } catch (_) {
55
+ }
56
+ }
57
+ hook = next;
58
+ }
59
+ }
60
+ });
61
+ try {
62
+ if (global.top && global.top !== global && !global.top.__REACT_DEVTOOLS_GLOBAL_HOOK__) {
63
+ global.top.__REACT_DEVTOOLS_GLOBAL_HOOK__ = hook;
64
+ }
65
+ } catch (_) {
66
+ }
67
+ } catch (_) {
68
+ }
69
+ })(typeof globalThis !== "undefined" ? globalThis : window);
70
+ //# sourceMappingURL=bootstrap.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../.agents/skills/chippy/extension/devtools-hook-shim.js"],
4
+ "sourcesContent": ["/* eslint-disable */\n/**\n * DevTools-hook shim.\n *\n * Must be installed BEFORE react-dom evaluates. React-DOM checks for\n * window.__REACT_DEVTOOLS_GLOBAL_HOOK__\n * at module evaluation time. If a hook with `inject(internals)` is present,\n * react-dom registers itself into hook.renderers, which exposes the\n * `currentDispatcherRef` that Avalanche debug-render needs to capture hook\n * call stacks.\n *\n * Without this shim in place at evaluation time, hook.renderers stays empty,\n * debug-render cannot patch the dispatcher, and `debugHook()` collapses to\n * a flat fallback (no custom-hook ancestry, no folders).\n *\n * Idempotent: never overwrites an existing real hook (e.g. real React DevTools\n * extension). Only installs an empty shim when nothing is there yet.\n *\n * Browser extension content-script and the local Playwright path both load\n * this script BEFORE the page bootstraps React.\n */\n(function chippyDevtoolsHookShim(global) {\n try {\n if (global.__REACT_DEVTOOLS_GLOBAL_HOOK__) return;\n\n var renderers = new Map();\n // Committed FiberRoots per renderer, tracked like React DevTools does so\n // tree walks start from the live root instead of a container's stale\n // HostRoot alternate.\n var fiberRoots = new Map();\n function rootsFor(id) {\n var roots = fiberRoots.get(id);\n if (!roots) { roots = new Set(); fiberRoots.set(id, roots); }\n return roots;\n }\n var hook = {\n __chippyShim: true,\n supportsFiber: true,\n renderers: renderers,\n inject: function inject(renderer) {\n var id = (renderers.size || 0) + 1;\n renderers.set(id, renderer);\n return id;\n },\n getFiberRoots: function getFiberRoots(id) { return rootsFor(id); },\n onScheduleFiberRoot: function () {},\n onCommitFiberRoot: function onCommitFiberRoot(id, root) {\n if (!root || !root.current) return;\n var roots = rootsFor(id);\n var state = root.current.memoizedState;\n var unmounting = !state || state.element == null;\n if (unmounting) roots.delete(root);\n else roots.add(root);\n },\n onCommitFiberUnmount: function () {},\n onPostCommitFiberRoot: function () {},\n };\n\n Object.defineProperty(global, '__REACT_DEVTOOLS_GLOBAL_HOOK__', {\n configurable: true,\n enumerable: true,\n get: function () { return hook; },\n set: function (next) {\n // Real DevTools may try to install later. Accept it but preserve any\n // renderers we already collected so debug-render can still find them.\n if (next && typeof next === 'object') {\n if (!next.renderers || (next.renderers.size === 0 && renderers.size > 0)) {\n try { next.renderers = renderers; } catch (_) {}\n }\n hook = next;\n }\n },\n });\n\n // Cross-iframe note: if running in a top-frame, mirror so child iframes\n // (Storybook iframe.html) can rely on it too. Safe no-op otherwise.\n try {\n if (global.top && global.top !== global && !global.top.__REACT_DEVTOOLS_GLOBAL_HOOK__) {\n global.top.__REACT_DEVTOOLS_GLOBAL_HOOK__ = hook;\n }\n } catch (_) {}\n } catch (_) {\n // Never throw at page boot. A failed shim must degrade silently.\n }\n})(typeof globalThis !== 'undefined' ? globalThis : window);\n"],
5
+ "mappings": ";CAqBC,SAAS,uBAAuB,QAAQ;AACvC,MAAI;AAQF,QAASA,YAAT,SAAkB,IAAI;AACpB,UAAI,QAAQ,WAAW,IAAI,EAAE;AAC7B,UAAI,CAAC,OAAO;AAAE,gBAAQ,oBAAI,IAAI;AAAG,mBAAW,IAAI,IAAI,KAAK;AAAA,MAAG;AAC5D,aAAO;AAAA,IACT;AAJS,mBAAAA;AAPT,QAAI,OAAO,+BAAgC;AAE3C,QAAI,YAAY,oBAAI,IAAI;AAIxB,QAAI,aAAa,oBAAI,IAAI;AAMzB,QAAI,OAAO;AAAA,MACT,cAAc;AAAA,MACd,eAAe;AAAA,MACf;AAAA,MACA,QAAQ,SAAS,OAAO,UAAU;AAChC,YAAI,MAAM,UAAU,QAAQ,KAAK;AACjC,kBAAU,IAAI,IAAI,QAAQ;AAC1B,eAAO;AAAA,MACT;AAAA,MACA,eAAe,SAAS,cAAc,IAAI;AAAE,eAAOA,UAAS,EAAE;AAAA,MAAG;AAAA,MACjE,qBAAqB,WAAY;AAAA,MAAC;AAAA,MAClC,mBAAmB,SAAS,kBAAkB,IAAI,MAAM;AACtD,YAAI,CAAC,QAAQ,CAAC,KAAK,QAAS;AAC5B,YAAI,QAAQA,UAAS,EAAE;AACvB,YAAI,QAAQ,KAAK,QAAQ;AACzB,YAAI,aAAa,CAAC,SAAS,MAAM,WAAW;AAC5C,YAAI,WAAY,OAAM,OAAO,IAAI;AAAA,YAC5B,OAAM,IAAI,IAAI;AAAA,MACrB;AAAA,MACA,sBAAsB,WAAY;AAAA,MAAC;AAAA,MACnC,uBAAuB,WAAY;AAAA,MAAC;AAAA,IACtC;AAEA,WAAO,eAAe,QAAQ,kCAAkC;AAAA,MAC9D,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,KAAK,WAAY;AAAE,eAAO;AAAA,MAAM;AAAA,MAChC,KAAK,SAAU,MAAM;AAGnB,YAAI,QAAQ,OAAO,SAAS,UAAU;AACpC,cAAI,CAAC,KAAK,aAAc,KAAK,UAAU,SAAS,KAAK,UAAU,OAAO,GAAI;AACxE,gBAAI;AAAE,mBAAK,YAAY;AAAA,YAAW,SAAS,GAAG;AAAA,YAAC;AAAA,UACjD;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,IACF,CAAC;AAID,QAAI;AACF,UAAI,OAAO,OAAO,OAAO,QAAQ,UAAU,CAAC,OAAO,IAAI,gCAAgC;AACrF,eAAO,IAAI,iCAAiC;AAAA,MAC9C;AAAA,IACF,SAAS,GAAG;AAAA,IAAC;AAAA,EACf,SAAS,GAAG;AAAA,EAEZ;AACF,GAAG,OAAO,eAAe,cAAc,aAAa,MAAM;",
6
+ "names": ["rootsFor"]
7
+ }
package/lib/browser.js ADDED
@@ -0,0 +1,15 @@
1
+ // src/package/browser.ts
2
+ async function connectChippy(helperUrl = "http://127.0.0.1:7823") {
3
+ const base = new URL(helperUrl);
4
+ if (!["http:", "https:"].includes(base.protocol)) throw new Error("Chippy helper URL must use HTTP or HTTPS");
5
+ const url = new URL("/__chippy/inject.mjs", base).href;
6
+ const runtime = await import(
7
+ /* @vite-ignore */
8
+ url
9
+ );
10
+ return await runtime.ready;
11
+ }
12
+ export {
13
+ connectChippy
14
+ };
15
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/package/browser.ts"],
4
+ "sourcesContent": ["export interface BrowserConnection {\n chippy: unknown;\n avalanche: unknown;\n connState: string | null;\n integration: unknown;\n activated: boolean | null;\n probesActive: boolean | null;\n}\n\n/** Connect this document through a running Chippy helper. Reconnect after navigation. */\nexport async function connectChippy(helperUrl = 'http://127.0.0.1:7823'): Promise<BrowserConnection> {\n const base = new URL(helperUrl);\n if (!['http:', 'https:'].includes(base.protocol)) throw new Error('Chippy helper URL must use HTTP or HTTPS');\n const url = new URL('/__chippy/inject.mjs', base).href;\n const runtime = await import(/* @vite-ignore */ url);\n return await runtime.ready;\n}\n"],
5
+ "mappings": ";AAUA,eAAsB,cAAc,YAAY,yBAAqD;AACnG,QAAM,OAAO,IAAI,IAAI,SAAS;AAC9B,MAAI,CAAC,CAAC,SAAS,QAAQ,EAAE,SAAS,KAAK,QAAQ,EAAG,OAAM,IAAI,MAAM,0CAA0C;AAC5G,QAAM,MAAM,IAAI,IAAI,wBAAwB,IAAI,EAAE;AAClD,QAAM,UAAU,MAAM;AAAA;AAAA,IAA0B;AAAA;AAChD,SAAO,MAAM,QAAQ;AACvB;",
6
+ "names": []
7
+ }