@visulima/vis 1.0.0-alpha.21 → 1.0.0-alpha.23

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 (139) hide show
  1. package/CHANGELOG.md +103 -0
  2. package/LICENSE.md +204 -9
  3. package/README.md +21 -4
  4. package/dashboard/dist/index.html +152 -0
  5. package/dist/bin.js +1 -1
  6. package/dist/binx.js +3 -0
  7. package/dist/config/index.d.ts +208 -28
  8. package/dist/config/index.js +1 -1
  9. package/dist/packem_chunks/bin.js +360 -354
  10. package/dist/packem_chunks/bloom-status.js +2 -0
  11. package/dist/packem_chunks/bloom-sync.js +2 -0
  12. package/dist/packem_chunks/cache-attestation.js +1 -0
  13. package/dist/packem_chunks/config.js +15 -15
  14. package/dist/packem_chunks/doctor-probe.js +2 -2
  15. package/dist/packem_chunks/fix.js +3 -3
  16. package/dist/packem_chunks/handler.js +1 -1
  17. package/dist/packem_chunks/handler10.js +2 -1
  18. package/dist/packem_chunks/handler11.js +1 -5
  19. package/dist/packem_chunks/handler12.js +5 -1
  20. package/dist/packem_chunks/handler13.js +1 -27
  21. package/dist/packem_chunks/handler14.js +28 -5
  22. package/dist/packem_chunks/handler15.js +5 -1
  23. package/dist/packem_chunks/handler16.js +1 -1
  24. package/dist/packem_chunks/handler17.js +1 -1
  25. package/dist/packem_chunks/handler18.js +1 -1
  26. package/dist/packem_chunks/handler19.js +1 -1
  27. package/dist/packem_chunks/handler2.js +4 -2
  28. package/dist/packem_chunks/handler20.js +1 -5
  29. package/dist/packem_chunks/handler21.js +5 -2
  30. package/dist/packem_chunks/handler22.js +2 -2
  31. package/dist/packem_chunks/handler23.js +2 -18
  32. package/dist/packem_chunks/handler24.js +1 -1
  33. package/dist/packem_chunks/handler25.js +1 -1
  34. package/dist/packem_chunks/handler26.js +5 -5
  35. package/dist/packem_chunks/handler27.js +1 -1
  36. package/dist/packem_chunks/handler28.js +1 -1
  37. package/dist/packem_chunks/handler29.js +1 -1
  38. package/dist/packem_chunks/handler3.js +4 -4
  39. package/dist/packem_chunks/handler30.js +3 -3
  40. package/dist/packem_chunks/handler31.js +4 -4
  41. package/dist/packem_chunks/handler32.js +3 -3
  42. package/dist/packem_chunks/handler33.js +1 -1
  43. package/dist/packem_chunks/handler34.js +24 -24
  44. package/dist/packem_chunks/handler35.js +5 -3
  45. package/dist/packem_chunks/handler36.js +21 -6
  46. package/dist/packem_chunks/handler37.js +60 -21
  47. package/dist/packem_chunks/handler38.js +6 -428
  48. package/dist/packem_chunks/handler39.js +708 -6
  49. package/dist/packem_chunks/handler4.js +6 -8
  50. package/dist/packem_chunks/handler40.js +11 -11
  51. package/dist/packem_chunks/handler41.js +286 -10
  52. package/dist/packem_chunks/handler42.js +11 -11
  53. package/dist/packem_chunks/handler43.js +10 -25
  54. package/dist/packem_chunks/handler44.js +25 -24
  55. package/dist/packem_chunks/handler45.js +23 -212
  56. package/dist/packem_chunks/handler46.js +2 -2
  57. package/dist/packem_chunks/handler47.js +1 -1
  58. package/dist/packem_chunks/handler48.js +53 -46
  59. package/dist/packem_chunks/handler49.js +6 -6
  60. package/dist/packem_chunks/handler5.js +8 -1
  61. package/dist/packem_chunks/handler6.js +1 -1
  62. package/dist/packem_chunks/handler7.js +1 -1
  63. package/dist/packem_chunks/handler8.js +1 -1
  64. package/dist/packem_chunks/handler9.js +1 -2
  65. package/dist/packem_chunks/heal-accept.js +4 -4
  66. package/dist/packem_chunks/heal.js +1 -1
  67. package/dist/packem_chunks/help-command.js +16 -16
  68. package/dist/packem_chunks/index.js +2 -2
  69. package/dist/packem_chunks/keys-refresh.js +1 -1
  70. package/dist/packem_chunks/list.js +2 -2
  71. package/dist/packem_chunks/loader.js +4 -1
  72. package/dist/packem_chunks/loader2.js +1 -0
  73. package/dist/packem_chunks/prune.js +1 -1
  74. package/dist/packem_chunks/run.js +1 -1
  75. package/dist/packem_chunks/status.js +2 -2
  76. package/dist/packem_chunks/sync.js +2 -2
  77. package/dist/packem_chunks/sync2.js +2 -2
  78. package/dist/packem_chunks/tripwire.js +2 -2
  79. package/dist/packem_chunks/verify-lockfile.js +2 -0
  80. package/dist/packem_shared/{advisories-DsynpacV.js → advisories-U1QKY_tg.js} +1 -1
  81. package/dist/packem_shared/{ai-analysis-uYuTIIXi.js → ai-analysis-B8pDCOuT.js} +2 -2
  82. package/dist/packem_shared/ai-fix-DiGSrGKv.js +43 -0
  83. package/dist/packem_shared/anolilab-text-CAM_E6uK.js +13 -0
  84. package/dist/packem_shared/applyDefaults-KxZkvlp3.js +1 -0
  85. package/dist/packem_shared/build-scripts-3E2pmscY.js +1 -0
  86. package/dist/packem_shared/cyclonedx-B293T7R0.js +4 -0
  87. package/dist/packem_shared/dependency-scan-BbtivycX.js +1 -0
  88. package/dist/packem_shared/docker-BhBBfWfc.js +60 -0
  89. package/dist/packem_shared/failure-log-B0Uh-65U.js +2 -0
  90. package/dist/packem_shared/index-C1w1GXdS.js +1 -0
  91. package/dist/packem_shared/index-CZX_II5N.js +29 -0
  92. package/dist/packem_shared/index.server-B7ETiT4C.js +2 -0
  93. package/dist/packem_shared/license-zZU7aavK.js +1 -0
  94. package/dist/packem_shared/{lifecycle-Dv3nAtoD.js → lifecycle-wRE7ymVc.js} +2 -2
  95. package/dist/packem_shared/{lockfile-C5DYMHVq.js → lockfile-CQLFNyVa.js} +1 -1
  96. package/dist/packem_shared/manifests-Z3spBpxv.js +1 -0
  97. package/dist/packem_shared/{min-release-age-BFozFonQ.js → min-release-age-Cz6HbF-I.js} +2 -2
  98. package/dist/packem_shared/{native-config-sync-Dvi1g2nQ.js → native-config-sync-BOeuyrBj.js} +5 -5
  99. package/dist/packem_shared/osv-bloom-CyCDpXBl.js +2 -0
  100. package/dist/packem_shared/pm-runner-CVliR6Ie.js +1 -0
  101. package/dist/packem_shared/provenance-BcldGs02.js +1 -0
  102. package/dist/packem_shared/readFileSync-CGmzMUF2-D6rUjGDn.js +1 -0
  103. package/dist/packem_shared/registry-keys-pemEkRM9.js +1 -0
  104. package/dist/packem_shared/resolve-explicit-2G-2HWtR.js +5 -0
  105. package/dist/packem_shared/runtime-check-DgXsKCsv.js +1 -0
  106. package/dist/packem_shared/s1ngularity-Boxkax0D.js +1 -0
  107. package/dist/packem_shared/scan-progress-EbvmIh4i.js +2 -0
  108. package/dist/packem_shared/{selectors-B2ISH581.js → selectors-BE2BCnTR.js} +1 -1
  109. package/dist/packem_shared/signatures-SO-fyExV.js +2 -0
  110. package/dist/packem_shared/toolchain-Jx2lkAYy.js +5 -0
  111. package/dist/packem_shared/typosquats-CioMnpnb.js +1 -0
  112. package/dist/packem_shared/verify-C8EAHql6.js +1 -0
  113. package/dist/packem_shared/{vis-update-app-CFrlJ3mW.js → vis-update-app-BWA1kA1q.js} +1 -1
  114. package/index.d.ts +78 -0
  115. package/index.js +57 -53
  116. package/package.json +34 -13
  117. package/schemas/project.schema.json +37 -7
  118. package/schemas/vis-config.schema.json +2395 -1996
  119. package/dist/packem_shared/ai-cache-DuwHYx2O.js +0 -1
  120. package/dist/packem_shared/ai-fix-DzrA-dVz.js +0 -43
  121. package/dist/packem_shared/applyDefaults-BOVDw1jD.js +0 -1
  122. package/dist/packem_shared/build-scripts-DsWMSWDs.js +0 -1
  123. package/dist/packem_shared/cache-directory-DQak1Vjc.js +0 -1
  124. package/dist/packem_shared/cyclonedx-CiHXuG8M.js +0 -4
  125. package/dist/packem_shared/dependency-scan-DC3nAFHS.js +0 -1
  126. package/dist/packem_shared/docker-B-CIN_nj.js +0 -60
  127. package/dist/packem_shared/failure-log-C3LEMmkq.js +0 -2
  128. package/dist/packem_shared/flakiness-Dq6K4ymq.js +0 -1
  129. package/dist/packem_shared/manifests-B0fMp872.js +0 -1
  130. package/dist/packem_shared/registry-keys-CewRFW0e.js +0 -1
  131. package/dist/packem_shared/resolve-explicit-CC4Kifk5.js +0 -5
  132. package/dist/packem_shared/run-summary-utils-BaBGP3bo.js +0 -1
  133. package/dist/packem_shared/runtime-check-BusAwPb2.js +0 -1
  134. package/dist/packem_shared/scan-progress-CMynp3eA.js +0 -2
  135. package/dist/packem_shared/signatures-5ZdjJ2Pu.js +0 -2
  136. package/dist/packem_shared/toolchain-Cc3cwyLP.js +0 -5
  137. package/dist/packem_shared/typosquats-BCeR-sLf.js +0 -1
  138. package/dist/packem_shared/verify-07kUNTuP.js +0 -1
  139. package/dist/packem_shared/xxh3-DrAUNq4n.js +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visulima/vis",
3
- "version": "1.0.0-alpha.21",
3
+ "version": "1.0.0-alpha.23",
4
4
  "description": "A monorepo dev toolkit — task runner, remote caching, security scanning, git hooks, and AI agent integrations — powered by @visulima/task-runner",
5
5
  "keywords": [
6
6
  "build",
@@ -63,10 +63,13 @@
63
63
  },
64
64
  "bin": {
65
65
  "v": "./dist/bin.js",
66
- "vis": "./dist/bin.js"
66
+ "vis": "./dist/bin.js",
67
+ "visx": "./dist/binx.js",
68
+ "vx": "./dist/binx.js"
67
69
  },
68
70
  "files": [
69
71
  "dist/**",
72
+ "dashboard/dist/**",
70
73
  "schemas/**",
71
74
  "skills/**",
72
75
  "templates/**",
@@ -77,19 +80,31 @@
77
80
  "LICENSE.md"
78
81
  ],
79
82
  "dependencies": {
83
+ "@floating-ui/core": "1.7.5",
84
+ "@floating-ui/dom": "1.7.6",
85
+ "@hono/node-server": "^2.0.2",
86
+ "@visulima/error": "6.0.0-alpha.27",
80
87
  "@visulima/secret-scanner": "1.0.0-alpha.3",
81
- "@visulima/task-runner": "1.0.0-alpha.14",
82
- "@visulima/tui": "1.0.0-alpha.16",
88
+ "@visulima/source-map": "3.0.0-alpha.9",
89
+ "@visulima/task-runner": "1.0.0-alpha.15",
90
+ "@visulima/tui": "1.0.0-alpha.18",
91
+ "graphology": "0.26.0",
92
+ "graphology-layout-forceatlas2": "0.10.1",
93
+ "graphology-types": "0.24.8",
94
+ "hono": "4.12.19",
83
95
  "jiti": "^2.7.0",
84
96
  "module-replacements": "^2.11.0",
85
97
  "module-replacements-codemods": "^1.2.1",
86
98
  "react": "19.2.6",
87
99
  "react-reconciler": ">=0.33.0",
100
+ "sigma": "3.0.3",
88
101
  "tinyexec": "^1.1.2"
89
102
  },
90
103
  "peerDependencies": {
91
104
  "@gitbeaker/rest": ">=43.8.0",
92
- "@octokit/rest": ">=22.0.1"
105
+ "@octokit/rest": ">=22.0.1",
106
+ "fb-watchman": ">=2.0.0",
107
+ "sigstore": ">=3.0.0"
93
108
  },
94
109
  "peerDependenciesMeta": {
95
110
  "@gitbeaker/rest": {
@@ -97,17 +112,23 @@
97
112
  },
98
113
  "@octokit/rest": {
99
114
  "optional": true
115
+ },
116
+ "fb-watchman": {
117
+ "optional": true
118
+ },
119
+ "sigstore": {
120
+ "optional": true
100
121
  }
101
122
  },
102
123
  "optionalDependencies": {
103
- "@visulima/vis-binding-darwin-arm64": "1.0.0-alpha.21",
104
- "@visulima/vis-binding-linux-arm64-musl": "1.0.0-alpha.21",
105
- "@visulima/vis-binding-linux-x64-gnu": "1.0.0-alpha.21",
106
- "@visulima/vis-binding-linux-arm64-gnu": "1.0.0-alpha.21",
107
- "@visulima/vis-binding-darwin-x64": "1.0.0-alpha.21",
108
- "@visulima/vis-binding-win32-arm64-msvc": "1.0.0-alpha.21",
109
- "@visulima/vis-binding-linux-x64-musl": "1.0.0-alpha.21",
110
- "@visulima/vis-binding-win32-x64-msvc": "1.0.0-alpha.21"
124
+ "@visulima/vis-binding-linux-arm64-gnu": "1.0.0-alpha.23",
125
+ "@visulima/vis-binding-darwin-x64": "1.0.0-alpha.23",
126
+ "@visulima/vis-binding-darwin-arm64": "1.0.0-alpha.23",
127
+ "@visulima/vis-binding-linux-arm64-musl": "1.0.0-alpha.23",
128
+ "@visulima/vis-binding-linux-x64-gnu": "1.0.0-alpha.23",
129
+ "@visulima/vis-binding-linux-x64-musl": "1.0.0-alpha.23",
130
+ "@visulima/vis-binding-win32-x64-msvc": "1.0.0-alpha.23",
131
+ "@visulima/vis-binding-win32-arm64-msvc": "1.0.0-alpha.23"
111
132
  },
112
133
  "engines": {
113
134
  "node": "^22.14.0 || >=24.10.0"
@@ -70,6 +70,10 @@
70
70
  ],
71
71
  "description": "Project type — `library`, `application`, `service`, or `tool`.\n\n- `library` — reusable code consumed by other workspace projects.\n- `application` — end-user-facing build target (web app, mobile app).\n- `service` — long-running HTTP / worker process deployed independently.\n- `tool` — CLI or developer tooling shipped as an executable."
72
72
  },
73
+ "restricted": {
74
+ "type": "boolean",
75
+ "description": "Marks the project as write-restricted. Consumed by `vis sync codeowners --write-guard` to scope the generated Write Guard workflow to this project's paths."
76
+ },
73
77
  "sourceRoot": {
74
78
  "type": "string",
75
79
  "description": "Source root, used for display and language inference."
@@ -166,6 +170,10 @@
166
170
  "type": "string",
167
171
  "description": "The command to run (alternative to executor)"
168
172
  },
173
+ "concurrencyGroup": {
174
+ "type": "string",
175
+ "description": "Workspace-level concurrency group this target opts into. The scheduler caps the *combined* in-flight count of every task whose target carries the same group name to the value declared in {@link TaskRunnerOptions.concurrencyGroups } . Use this when several targets share an external resource (a single Postgres, a developer's Docker daemon, an account-wide deploy lock) so the cap follows the resource, not any single target name.\n\nTargets that name a group not declared in `concurrencyGroups` run uncapped — a typo shouldn't deadlock the graph. Caps don't apply to tasks marked `always: true`; those run in a separate finalisation phase outside the scheduler."
176
+ },
169
177
  "configurations": {
170
178
  "type": "object",
171
179
  "additionalProperties": {
@@ -174,10 +182,6 @@
174
182
  },
175
183
  "description": "Named configurations (e.g., \"production\", \"development\")"
176
184
  },
177
- "concurrencyGroup": {
178
- "type": "string",
179
- "description": "Workspace-level concurrency group this target opts into. The scheduler caps the *combined* in-flight count of every task whose target carries the same group name to the value declared in {@link TaskRunnerOptions.concurrencyGroups } . Use this when several targets share an external resource (a single Postgres, a developer's Docker daemon, an account-wide deploy lock) so the cap follows the resource, not any single target name.\n\nTargets that name a group not declared in `concurrencyGroups` run uncapped — a typo shouldn't deadlock the graph. Caps don't apply to tasks marked `always: true`; those run in a separate finalisation phase outside the scheduler."
180
- },
181
185
  "dependsOn": {
182
186
  "type": "array",
183
187
  "items": {
@@ -233,6 +237,14 @@
233
237
  "type": "string",
234
238
  "description": "The executor/command to run"
235
239
  },
240
+ "hashMode": {
241
+ "type": "string",
242
+ "enum": [
243
+ "declared",
244
+ "trace"
245
+ ],
246
+ "description": "How this target's cache key is derived.\n\n- `\"declared\"` (default): the Nx-style path — the hash is built up-front from explicitly declared `inputs` (plus named/global inputs and the lockfile). Deterministic and portable across machines: two runners with the same workspace state produce the same key regardless of OS or syscall surface.\n- `\"trace\"`: the task is run under the file-access tracker (strace on Linux, an fs preload shim elsewhere) and the cache key is derived from the files it actually *read* during execution — no `inputs` declaration required. Mirrors the shipped `{ auto: true }` output capture, but for the input side. Use for compound or opaque commands whose real input set is impractical to enumerate.\n\nOpt-in per target precisely because trace mode trades reproducibility for convenience: the observed read set can differ across runners with different syscall surfaces (a static binary on a host without strace records nothing), so a trace key is **not** guaranteed portable between machines. Leave targets on `\"declared\"` whenever the input set can reasonably be listed.\n\nEquivalent to flipping {@link TaskRunnerOptions.autoFingerprint } on for this one target while every other target stays declared."
247
+ },
236
248
  "inputs": {
237
249
  "type": "array",
238
250
  "items": {
@@ -333,14 +345,32 @@
333
345
  },
334
346
  "maxConcurrent": {
335
347
  "type": "number",
336
- "description": "Maximum number of in-flight instances of this target across the whole graph. When set, the scheduler refuses to start an additional task whose `target.target` equals this target's name once the running count reaches `maxConcurrent`. Independent of `--parallel`: the global cap still bounds total in-flight tasks, and `maxConcurrent` further bounds the per-target subset.\n\nUse for tests/deploys that share an external resource (DB, port, mock server). Set to `1` to serialize. Values `<= 0` are ignored.\n\nIf multiple projects declare different values for the same target name, the runner uses the smallest declared cap. Caps don't apply to tasks marked `always: true`; those run in a separate finalisation phase outside the scheduler."
348
+ "description": "Maximum number of in-flight instances of this target across the whole graph. When set, the scheduler refuses to start an additional task whose `target.target` equals this target's name once the running count reaches `maxConcurrent`. Independent of `--parallel`: the global cap still bounds total in-flight tasks, and `maxConcurrent` further bounds the per-target subset.\n\nUse for tests/deploys that share an external resource (DB, port, mock server). Set to `1` to serialize. Values `&lt;= 0` are ignored.\n\nIf multiple projects declare different values for the same target name, the runner uses the smallest declared cap. Caps don't apply to tasks marked `always: true`; those run in a separate finalisation phase outside the scheduler."
337
349
  },
338
350
  "outputs": {
339
351
  "type": "array",
340
352
  "items": {
341
- "type": "string"
353
+ "anyOf": [
354
+ {
355
+ "type": "string"
356
+ },
357
+ {
358
+ "type": "object",
359
+ "properties": {
360
+ "auto": {
361
+ "type": "boolean",
362
+ "const": true
363
+ }
364
+ },
365
+ "required": [
366
+ "auto"
367
+ ],
368
+ "additionalProperties": false
369
+ }
370
+ ],
371
+ "description": "A single entry in a task's `outputs` list.\n\n- `string` — a literal path *or* a glob pattern relative to the workspace root. Prefix with `!` to exclude files the positive patterns would otherwise include (e.g. `\"!dist/cache/**\"`).\n- `{ auto: true }` — use whatever files the task actually wrote during execution (resolved from the file-access tracker). Lets authors who don't know their exact output layout cache results without listing every path. Silently behaves as \"no outputs\" when tracking isn't active for this task."
342
372
  },
343
- "description": "Output patterns produced by this target"
373
+ "description": "Output patterns produced by this target. Each entry is a literal path, a glob (`\"dist/**\"`), a negative glob (`\"!dist/cache/**\"`), or `{ auto: true }` to cache whatever files the task actually wrote during execution (resolved from the file-access tracker). `{ auto: true }` lets a build script cache zero-config without the author enumerating its output layout; it contributes nothing — and the runner declines to seed the cache — when write tracking isn't available for the task, so a hit can never restore a missing artifact."
344
374
  },
345
375
  "parallelism": {
346
376
  "type": "boolean",