@githolon/dsl 0.3.0 → 0.5.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.
- package/package.json +2 -1
- package/src/build_package.ts +4 -0
- package/src/capability_exports.ts +55 -0
- package/src/codegen_dart.ts +9 -0
- package/src/codegen_proof.ts +72 -11
- package/src/compile_package_main.ts +262 -17
- package/src/directive.ts +35 -10
- package/src/engine_entry.ts +5 -1
- package/src/framework/capability.ts +215 -0
- package/src/framework/impure_capability.ts +25 -3
- package/src/framework/workspaces.ts +129 -0
- package/src/index.ts +9 -0
- package/src/manifest.ts +114 -2
- package/src/read.ts +29 -0
- package/src/stable_ids.ts +226 -0
- package/src/stable_ids_types.ts +40 -0
- package/src/usd.ts +54 -0
- package/src/usd_layers.ts +65 -1
- package/src/wire_encode.ts +15 -0
- package/src/workspace_sharding.ts +123 -18
- package/src/workspace_type.ts +7 -5
- package/dart/.dart_tool/package_config.json +0 -328
- package/dart/.dart_tool/package_graph.json +0 -485
- package/dart/.dart_tool/pub/bin/test/test.dart-3.11.5.snapshot +0 -0
- package/dart/.dart_tool/test/incremental_kernel.Ly9AZGFydD0zLjU= +0 -0
- package/dart/.dart_tool/version +0 -1
- package/dart/build/native_assets/macos/native_assets.json +0 -1
- package/dart/build/test_cache/build/89a6598c8854ed031dfc25d83c80860e.cache.dill.track.dill +0 -0
- package/dart/build/unit_test_assets/AssetManifest.bin +0 -0
- package/dart/build/unit_test_assets/FontManifest.json +0 -1
- package/dart/build/unit_test_assets/NOTICES.Z +0 -0
- package/dart/build/unit_test_assets/NativeAssetsManifest.json +0 -1
- package/dart/build/unit_test_assets/shaders/ink_sparkle.frag +0 -0
- package/dart/build/unit_test_assets/shaders/stretch_effect.frag +0 -0
|
@@ -75,6 +75,7 @@ import { directive } from "./directive.js";
|
|
|
75
75
|
import { set, strike, withMarker, type PlannedOp } from "./ops.js";
|
|
76
76
|
import { query } from "./query.js";
|
|
77
77
|
import { sum } from "./sum.js";
|
|
78
|
+
import { min, max } from "./extremum.js";
|
|
78
79
|
import { refAs, workspaceInvariant } from "./framework/workspace_invariant.js";
|
|
79
80
|
|
|
80
81
|
/** One packed axis the factory derives a placement lane for. */
|
|
@@ -291,7 +292,15 @@ export const canonicalSealFrontiers = (
|
|
|
291
292
|
* the ABSOLUTE per-(shard, read, group) value, true at the shard commit `frontier`,
|
|
292
293
|
* folded as plain Lww after the gate recomputed it from carried evidence. `bucket`
|
|
293
294
|
* (= `readId group`) is the maintained estate-total's group key; `kind` records
|
|
294
|
-
* what the value tallies (`count` | `sum` | `rows` — the load policy reads `rows`
|
|
295
|
+
* what the value tallies (`count` | `sum` | `rows` — the load policy reads `rows` —
|
|
296
|
+
* and, SLICE 8, `min` | `max`: the shard's maintained extremum at the frontier).
|
|
297
|
+
*
|
|
298
|
+
* `empty` (slice 8, EXTREMUM kinds only): `1` = the shard's group has NO
|
|
299
|
+
* contributing member — an empty group has no extremum and `0` is a legitimate
|
|
300
|
+
* extremum value (the `extremum.ts` null law), so emptiness is a FLAG, never a
|
|
301
|
+
* sentinel value. The maintained estate extremums below exclude `empty:1` rows;
|
|
302
|
+
* additive kinds never set the field (their rows fold byte-identically to before
|
|
303
|
+
* it existed).
|
|
295
304
|
*/
|
|
296
305
|
export const NomosSummarySubtotal = aggregate("NomosSummarySubtotal", {
|
|
297
306
|
readId: t.string().merge(Lww),
|
|
@@ -301,6 +310,7 @@ export const NomosSummarySubtotal = aggregate("NomosSummarySubtotal", {
|
|
|
301
310
|
bucket: t.string().merge(Lww),
|
|
302
311
|
value: t.int().merge(Lww),
|
|
303
312
|
frontier: t.string().merge(Lww),
|
|
313
|
+
empty: t.int().merge(Lww).optional(),
|
|
304
314
|
});
|
|
305
315
|
|
|
306
316
|
/** THE PER-SHARD DELTA FRONTIER watermark (§5.2 step 1 — contiguity law-state). */
|
|
@@ -608,16 +618,34 @@ export const nomosCheckpointSeal = directive("nomosCheckpointSeal")
|
|
|
608
618
|
const summarySubtotalSchema = z.object({
|
|
609
619
|
readId: z.string().min(1),
|
|
610
620
|
group: z.string(), // "" = the grand-total group
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
621
|
+
// SLICE 8: `min`/`max` join the lane. Their `prev`/`value` are NULLABLE — null =
|
|
622
|
+
// "no contributing member" (the extremum.ts empty-group law; 0 is a legitimate
|
|
623
|
+
// extremum). The PLAN refuses a null on any additive kind (typed) — nullability
|
|
624
|
+
// is the extremum kinds' vocabulary, never a loosening of counts/sums/rows.
|
|
625
|
+
kind: z.enum(["count", "sum", "rows", "min", "max"]),
|
|
626
|
+
prev: z.number().int().nullable(), // the CLAIMED previous absolute (gate-verified against held)
|
|
627
|
+
value: z.number().int().nullable(), // the CLAIMED new absolute (plan-verified against prev + carried evidence)
|
|
628
|
+
/**
|
|
629
|
+
* THE DECLARED RETRACTION (slice 8, extremum kinds only): the covered range
|
|
630
|
+
* RETRACTED the extremum (a contributing row left/worsened — the non-monotone
|
|
631
|
+
* case), so `value` is the shard's SUFFIX RE-DERIVATION (its maintained
|
|
632
|
+
* projection extremum at `toOid`), not an extremize over `prev` + candidates.
|
|
633
|
+
* The plan REFUSES an undeclared non-monotone chain (a silent retraction can
|
|
634
|
+
* never fold); a declared one folds as a frontier-pinned, deep-verifiable
|
|
635
|
+
* fact — exactly the trust-chain posture of the strike-bearing close (§5.5).
|
|
636
|
+
*/
|
|
637
|
+
rederived: z.boolean().optional(),
|
|
614
638
|
});
|
|
615
639
|
|
|
616
640
|
const summaryEventSchema = z.object({
|
|
617
641
|
oid: z.string().min(1), // the shard commit (content address — deep-verify resolves it)
|
|
618
642
|
intentId: z.string(),
|
|
643
|
+
// Additive kinds: `delta` is the increment. EXTREMUM kinds (slice 8): `delta`
|
|
644
|
+
// is the POST-INTENT ABSOLUTE extremum of the bucket (null = the group emptied)
|
|
645
|
+
// — the evidence chain the plan walks for monotonicity. Null on an additive
|
|
646
|
+
// kind refuses in the plan (typed).
|
|
619
647
|
deltas: z
|
|
620
|
-
.array(z.object({ readId: z.string().min(1), group: z.string(), delta: z.number().int() }))
|
|
648
|
+
.array(z.object({ readId: z.string().min(1), group: z.string(), delta: z.number().int().nullable() }))
|
|
621
649
|
.max(64),
|
|
622
650
|
});
|
|
623
651
|
|
|
@@ -636,19 +664,34 @@ export const nomosPropagateSummary = directive("nomosPropagateSummary")
|
|
|
636
664
|
)
|
|
637
665
|
.plan((p) => {
|
|
638
666
|
// ── THE GATE RECOMPUTATION, arithmetic half (ruling 4 — day one, in the law) ──
|
|
639
|
-
// Pure over the payload: every claimed absolute
|
|
640
|
-
// plus the carried events' deltas
|
|
641
|
-
//
|
|
642
|
-
//
|
|
643
|
-
//
|
|
667
|
+
// Pure over the payload. ADDITIVE kinds (count/sum/rows): every claimed absolute
|
|
668
|
+
// must equal the claimed previous plus the carried events' deltas. EXTREMUM
|
|
669
|
+
// kinds (slice 8 — min/max): the carried events are POST-INTENT ABSOLUTES; the
|
|
670
|
+
// plan walks the chain prev → e1 → … → en and verifies EXTREMIZE-ON-MONOTONE
|
|
671
|
+
// (every step only ever improves the extremum, and the final step IS the
|
|
672
|
+
// claim); a NON-MONOTONE step (a retraction — the extremum's row left or
|
|
673
|
+
// worsened) folds ONLY when the subtotal DECLARES it (`rederived: true`, the
|
|
674
|
+
// shard's suffix re-derivation) — silent retraction is a typed refusal, and a
|
|
675
|
+
// declared one stays deep-verifiable (mount the shard, recount, byte-compare).
|
|
676
|
+
// Every carried delta must land in a claimed subtotal (no hidden effects). The
|
|
677
|
+
// held-state half — fromOid == the recorded frontier, claimed prev == the held
|
|
678
|
+
// subtotal — is the `nomosSummaryGate` invariant's `pre:` reads. Together:
|
|
679
|
+
// held + carried evidence ⇒ claimed, or refuse.
|
|
644
680
|
if (p.fromOid === p.toOid) {
|
|
645
681
|
throw new Error(`summary-empty: fromOid and toOid are both '${p.toOid}' — an empty range propagates nothing`);
|
|
646
682
|
}
|
|
647
|
-
const
|
|
683
|
+
const isExtremum = (kind: string) => kind === "min" || kind === "max";
|
|
684
|
+
const claimed = new Map<
|
|
685
|
+
string,
|
|
686
|
+
{ kind: string; prev: number | null; value: number | null; sum: number; running: number | null; touched: boolean; nonMonotone: boolean }
|
|
687
|
+
>();
|
|
648
688
|
for (const s of p.subtotals) {
|
|
649
689
|
const key = summaryBucket(s.readId, s.group);
|
|
650
690
|
if (claimed.has(key)) throw new Error(`summary-duplicate: subtotal (${s.readId}, '${s.group}') claimed twice`);
|
|
651
|
-
|
|
691
|
+
if (!isExtremum(s.kind) && (s.prev === null || s.value === null)) {
|
|
692
|
+
throw new Error(`summary-null:${s.readId}: a '${s.kind}' subtotal carries null — null is the extremum kinds' empty-group vocabulary, never an additive value`);
|
|
693
|
+
}
|
|
694
|
+
claimed.set(key, { kind: s.kind, prev: s.prev, value: s.value, sum: 0, running: s.prev, touched: false, nonMonotone: false });
|
|
652
695
|
}
|
|
653
696
|
for (const ev of p.events) {
|
|
654
697
|
for (const d of ev.deltas) {
|
|
@@ -659,15 +702,43 @@ export const nomosPropagateSummary = directive("nomosPropagateSummary")
|
|
|
659
702
|
`but no subtotal claims that group — every touched group must carry its absolute`,
|
|
660
703
|
);
|
|
661
704
|
}
|
|
662
|
-
c.
|
|
705
|
+
if (isExtremum(c.kind)) {
|
|
706
|
+
// The carried value is the post-intent ABSOLUTE; monotone = it only improves.
|
|
707
|
+
const v = d.delta;
|
|
708
|
+
const improves =
|
|
709
|
+
v !== null && (c.running === null || (c.kind === "min" ? v <= c.running : v >= c.running));
|
|
710
|
+
if (!improves && !(v === null && c.running === null)) c.nonMonotone = true;
|
|
711
|
+
c.running = v;
|
|
712
|
+
c.touched = true;
|
|
713
|
+
} else {
|
|
714
|
+
if (d.delta === null) {
|
|
715
|
+
throw new Error(`summary-null:${d.readId}: a '${c.kind}' event delta is null — only extremum kinds carry the empty-group null`);
|
|
716
|
+
}
|
|
717
|
+
c.sum += d.delta;
|
|
718
|
+
}
|
|
663
719
|
}
|
|
664
720
|
}
|
|
665
721
|
for (const s of p.subtotals) {
|
|
666
722
|
const c = claimed.get(summaryBucket(s.readId, s.group))!;
|
|
667
|
-
if (s.
|
|
723
|
+
if (isExtremum(s.kind)) {
|
|
724
|
+
const final = c.touched ? c.running : c.prev;
|
|
725
|
+
if (final !== s.value) {
|
|
726
|
+
throw new Error(
|
|
727
|
+
`summary-mismatch: (${s.readId}, '${s.group}') claims ${s.value === null ? "null" : s.value} but the ` +
|
|
728
|
+
`carried evidence chain ends at ${final === null ? "null" : final} — the evidence does not reproduce the claim`,
|
|
729
|
+
);
|
|
730
|
+
}
|
|
731
|
+
if (c.nonMonotone && s.rederived !== true) {
|
|
732
|
+
throw new Error(
|
|
733
|
+
`extremum-retraction:${s.readId}:${s.group}: the covered range retracts the ${s.kind} (a non-monotone ` +
|
|
734
|
+
`step) — a silent retraction never folds. Re-derive the absolute from the shard's projection and ` +
|
|
735
|
+
`declare it (rederived: true); deep-verify remains the recourse`,
|
|
736
|
+
);
|
|
737
|
+
}
|
|
738
|
+
} else if ((s.prev as number) + c.sum !== s.value) {
|
|
668
739
|
throw new Error(
|
|
669
740
|
`summary-mismatch: (${s.readId}, '${s.group}') claims ${s.value} but prev ${s.prev} + ` +
|
|
670
|
-
`carried deltas ${c.sum} = ${s.prev + c.sum} — the evidence does not reproduce the claim`,
|
|
741
|
+
`carried deltas ${c.sum} = ${(s.prev as number) + c.sum} — the evidence does not reproduce the claim`,
|
|
671
742
|
);
|
|
672
743
|
}
|
|
673
744
|
}
|
|
@@ -680,8 +751,11 @@ export const nomosPropagateSummary = directive("nomosPropagateSummary")
|
|
|
680
751
|
set(row, "shard", p.shard),
|
|
681
752
|
set(row, "kind", s.kind),
|
|
682
753
|
set(row, "bucket", summaryBucket(s.readId, s.group)),
|
|
683
|
-
set(row, "value", s.value),
|
|
754
|
+
set(row, "value", s.value ?? 0),
|
|
684
755
|
set(row, "frontier", p.toOid),
|
|
756
|
+
// EXTREMUM kinds carry the emptiness FLAG (0 is a legitimate extremum);
|
|
757
|
+
// additive rows never set the field — byte-identical to the slice-3 shape.
|
|
758
|
+
...(isExtremum(s.kind) ? [set(row, "empty", s.value === null ? 1 : 0)] : []),
|
|
685
759
|
);
|
|
686
760
|
}
|
|
687
761
|
const wm = instance(NomosSummaryFrontier, summaryFrontierRowId(p.shard));
|
|
@@ -900,6 +974,23 @@ export function shardingLawModule(spec: ShardingLawSpec): Record<string, unknown
|
|
|
900
974
|
// rows, grouped by `bucket` = readId group — O(1) by #31. A scoped read's
|
|
901
975
|
// estate value = the coordinator's local tally + this sum at its bucket.
|
|
902
976
|
nomosEstateSummary: sum("nomosEstateSummary", "value").of(NomosSummarySubtotal).by("bucket"),
|
|
977
|
+
// THE ESTATE EXTREMUMS (§5.2, slice 8): ORDINARY maintained min/max over the
|
|
978
|
+
// SAME committed subtotal rows, by bucket — extremums over disjoint shards
|
|
979
|
+
// compose by extremizing per-shard extremums, so the estate value is O(1) off
|
|
980
|
+
// the projection's long-maintained extrema lane (the #47 RPC reads it). Rows
|
|
981
|
+
// flagged `empty:1` (a shard whose group has no contributing member) are
|
|
982
|
+
// EXCLUDED — an empty group has no extremum, and 0 is a legitimate value.
|
|
983
|
+
// Buckets partition by readId, so additive rows never pollute an extremum
|
|
984
|
+
// read's bucket. A scoped min/max's estate value = extremize(the
|
|
985
|
+
// coordinator's local extremum, this read at its bucket).
|
|
986
|
+
nomosEstateExtremumMin: min("nomosEstateExtremumMin", "value")
|
|
987
|
+
.of(NomosSummarySubtotal)
|
|
988
|
+
.where((p) => p.field("empty").ne(1))
|
|
989
|
+
.by("bucket"),
|
|
990
|
+
nomosEstateExtremumMax: max("nomosEstateExtremumMax", "value")
|
|
991
|
+
.of(NomosSummarySubtotal)
|
|
992
|
+
.where((p) => p.field("empty").ne(1))
|
|
993
|
+
.by("bucket"),
|
|
903
994
|
};
|
|
904
995
|
|
|
905
996
|
// ── §5.2 step 1+2 — THE SUMMARY GATE (held state versus the claims, via `pre:`) ──
|
|
@@ -931,10 +1022,24 @@ export function shardingLawModule(spec: ShardingLawSpec): Record<string, unknown
|
|
|
931
1022
|
if (fromOid !== heldFrontier) {
|
|
932
1023
|
return { reject: `frontier-gap:${heldFrontier === "" ? "genesis" : heldFrontier}` };
|
|
933
1024
|
}
|
|
934
|
-
const subtotals = Array.isArray(intent["subtotals"]) ? (intent["subtotals"] as { readId?: unknown; group?: unknown; prev?: unknown }[]) : [];
|
|
1025
|
+
const subtotals = Array.isArray(intent["subtotals"]) ? (intent["subtotals"] as { readId?: unknown; group?: unknown; prev?: unknown; kind?: unknown }[]) : [];
|
|
935
1026
|
for (let i = 0; i < subtotals.length; i++) {
|
|
936
1027
|
const s = subtotals[i]!;
|
|
937
|
-
const
|
|
1028
|
+
const heldRow = snapshots[`prev${i}`] ?? {};
|
|
1029
|
+
const heldRaw = heldRow["value"];
|
|
1030
|
+
if (s.kind === "min" || s.kind === "max") {
|
|
1031
|
+
// EXTREMUM kinds (slice 8): the held prev is NULL when no row exists yet
|
|
1032
|
+
// OR the held row is flagged empty — null is vocabulary, never 0.
|
|
1033
|
+
const heldValue: number | null =
|
|
1034
|
+
typeof heldRaw !== "number" || heldRow["empty"] === 1 ? null : heldRaw;
|
|
1035
|
+
const claimedPrev = s.prev === null ? null : typeof s.prev === "number" ? s.prev : NaN;
|
|
1036
|
+
if (claimedPrev !== heldValue) {
|
|
1037
|
+
return {
|
|
1038
|
+
reject: `summary-mismatch:${String(s.readId)}:held:${heldValue === null ? "null" : heldValue}:claimedPrev:${String(s.prev)}`,
|
|
1039
|
+
};
|
|
1040
|
+
}
|
|
1041
|
+
continue;
|
|
1042
|
+
}
|
|
938
1043
|
const heldValue = typeof heldRaw === "number" ? heldRaw : 0;
|
|
939
1044
|
const claimedPrev = typeof s.prev === "number" ? s.prev : NaN;
|
|
940
1045
|
if (claimedPrev !== heldValue) {
|
package/src/workspace_type.ts
CHANGED
|
@@ -561,10 +561,12 @@ export function validateWorkspaceTaxonomy(mod: {
|
|
|
561
561
|
// ── estate-scope reads (sharding §2/§5 — slice 3) ─────────────────────────────────
|
|
562
562
|
|
|
563
563
|
/**
|
|
564
|
-
* Lift a declared `count(...)`/`sum(...)` read to ESTATE
|
|
565
|
-
* read's per-shard values ride the §5.2 delta lane as
|
|
566
|
-
* subtotals on the coordinator, and the logical
|
|
567
|
-
* maintained estate total
|
|
564
|
+
* Lift a declared `count(...)`/`sum(...)`/`min(...)`/`max(...)` read to ESTATE
|
|
565
|
+
* SCOPE (sharding §5): the read's per-shard values ride the §5.2 delta lane as
|
|
566
|
+
* gate-recomputed committed subtotals on the coordinator, and the logical
|
|
567
|
+
* workspace answers it O(1) from the maintained estate total (counts/sums sum;
|
|
568
|
+
* extremums extremize over per-shard subtotal rows — slice 8) — never a
|
|
569
|
+
* scatter-gather.
|
|
568
570
|
*
|
|
569
571
|
* export const fxSiteCount = scoped(count("fxSiteCount").of(Site), EstateWs);
|
|
570
572
|
*
|
|
@@ -596,7 +598,7 @@ export function scoped<T extends { readonly id: string; readonly of: string }>(
|
|
|
596
598
|
const r = read as { id?: unknown; of?: unknown; _where?: unknown };
|
|
597
599
|
if (typeof r.id !== "string" || typeof r.of !== "string") {
|
|
598
600
|
throw new Error(
|
|
599
|
-
`scoped(read, scope): the read must be a count/sum with .of(...) declared (a named, maintained read)`,
|
|
601
|
+
`scoped(read, scope): the read must be a count/sum/min/max with .of(...) declared (a named, maintained read)`,
|
|
600
602
|
);
|
|
601
603
|
}
|
|
602
604
|
if ((r.id as string).includes("|")) {
|
|
@@ -1,328 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"configVersion": 2,
|
|
3
|
-
"packages": [
|
|
4
|
-
{
|
|
5
|
-
"name": "_fe_analyzer_shared",
|
|
6
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/_fe_analyzer_shared-100.0.0",
|
|
7
|
-
"packageUri": "lib/",
|
|
8
|
-
"languageVersion": "3.11"
|
|
9
|
-
},
|
|
10
|
-
{
|
|
11
|
-
"name": "analyzer",
|
|
12
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/analyzer-13.0.0",
|
|
13
|
-
"packageUri": "lib/",
|
|
14
|
-
"languageVersion": "3.9"
|
|
15
|
-
},
|
|
16
|
-
{
|
|
17
|
-
"name": "args",
|
|
18
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/args-2.7.0",
|
|
19
|
-
"packageUri": "lib/",
|
|
20
|
-
"languageVersion": "3.3"
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"name": "async",
|
|
24
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/async-2.13.1",
|
|
25
|
-
"packageUri": "lib/",
|
|
26
|
-
"languageVersion": "3.4"
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
"name": "boolean_selector",
|
|
30
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/boolean_selector-2.1.2",
|
|
31
|
-
"packageUri": "lib/",
|
|
32
|
-
"languageVersion": "3.1"
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
"name": "cli_config",
|
|
36
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/cli_config-0.2.0",
|
|
37
|
-
"packageUri": "lib/",
|
|
38
|
-
"languageVersion": "3.0"
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
"name": "collection",
|
|
42
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/collection-1.19.1",
|
|
43
|
-
"packageUri": "lib/",
|
|
44
|
-
"languageVersion": "3.4"
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
"name": "convert",
|
|
48
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/convert-3.1.2",
|
|
49
|
-
"packageUri": "lib/",
|
|
50
|
-
"languageVersion": "3.4"
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
"name": "coverage",
|
|
54
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/coverage-1.15.0",
|
|
55
|
-
"packageUri": "lib/",
|
|
56
|
-
"languageVersion": "3.4"
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
"name": "crypto",
|
|
60
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/crypto-3.0.7",
|
|
61
|
-
"packageUri": "lib/",
|
|
62
|
-
"languageVersion": "3.4"
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
"name": "file",
|
|
66
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/file-7.0.1",
|
|
67
|
-
"packageUri": "lib/",
|
|
68
|
-
"languageVersion": "3.0"
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
"name": "frontend_server_client",
|
|
72
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/frontend_server_client-4.0.0",
|
|
73
|
-
"packageUri": "lib/",
|
|
74
|
-
"languageVersion": "3.0"
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
"name": "glob",
|
|
78
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/glob-2.1.3",
|
|
79
|
-
"packageUri": "lib/",
|
|
80
|
-
"languageVersion": "3.3"
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
"name": "http",
|
|
84
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/http-1.6.0",
|
|
85
|
-
"packageUri": "lib/",
|
|
86
|
-
"languageVersion": "3.4"
|
|
87
|
-
},
|
|
88
|
-
{
|
|
89
|
-
"name": "http_multi_server",
|
|
90
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/http_multi_server-3.2.2",
|
|
91
|
-
"packageUri": "lib/",
|
|
92
|
-
"languageVersion": "3.2"
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
"name": "http_parser",
|
|
96
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/http_parser-4.1.2",
|
|
97
|
-
"packageUri": "lib/",
|
|
98
|
-
"languageVersion": "3.4"
|
|
99
|
-
},
|
|
100
|
-
{
|
|
101
|
-
"name": "io",
|
|
102
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/io-1.0.5",
|
|
103
|
-
"packageUri": "lib/",
|
|
104
|
-
"languageVersion": "3.4"
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
"name": "json_schema",
|
|
108
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/json_schema-5.2.2",
|
|
109
|
-
"packageUri": "lib/",
|
|
110
|
-
"languageVersion": "2.12"
|
|
111
|
-
},
|
|
112
|
-
{
|
|
113
|
-
"name": "logging",
|
|
114
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/logging-1.3.0",
|
|
115
|
-
"packageUri": "lib/",
|
|
116
|
-
"languageVersion": "3.4"
|
|
117
|
-
},
|
|
118
|
-
{
|
|
119
|
-
"name": "matcher",
|
|
120
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/matcher-0.12.20",
|
|
121
|
-
"packageUri": "lib/",
|
|
122
|
-
"languageVersion": "3.10"
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
"name": "meta",
|
|
126
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/meta-1.18.2",
|
|
127
|
-
"packageUri": "lib/",
|
|
128
|
-
"languageVersion": "3.5"
|
|
129
|
-
},
|
|
130
|
-
{
|
|
131
|
-
"name": "mime",
|
|
132
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/mime-2.0.0",
|
|
133
|
-
"packageUri": "lib/",
|
|
134
|
-
"languageVersion": "3.2"
|
|
135
|
-
},
|
|
136
|
-
{
|
|
137
|
-
"name": "node_preamble",
|
|
138
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/node_preamble-2.0.2",
|
|
139
|
-
"packageUri": "lib/",
|
|
140
|
-
"languageVersion": "2.12"
|
|
141
|
-
},
|
|
142
|
-
{
|
|
143
|
-
"name": "package_config",
|
|
144
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/package_config-2.2.0",
|
|
145
|
-
"packageUri": "lib/",
|
|
146
|
-
"languageVersion": "3.4"
|
|
147
|
-
},
|
|
148
|
-
{
|
|
149
|
-
"name": "path",
|
|
150
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/path-1.9.1",
|
|
151
|
-
"packageUri": "lib/",
|
|
152
|
-
"languageVersion": "3.4"
|
|
153
|
-
},
|
|
154
|
-
{
|
|
155
|
-
"name": "pool",
|
|
156
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/pool-1.5.2",
|
|
157
|
-
"packageUri": "lib/",
|
|
158
|
-
"languageVersion": "3.4"
|
|
159
|
-
},
|
|
160
|
-
{
|
|
161
|
-
"name": "pub_semver",
|
|
162
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/pub_semver-2.2.0",
|
|
163
|
-
"packageUri": "lib/",
|
|
164
|
-
"languageVersion": "3.4"
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
"name": "quiver",
|
|
168
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/quiver-3.2.2",
|
|
169
|
-
"packageUri": "lib/",
|
|
170
|
-
"languageVersion": "2.17"
|
|
171
|
-
},
|
|
172
|
-
{
|
|
173
|
-
"name": "rfc_6901",
|
|
174
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/rfc_6901-0.2.1",
|
|
175
|
-
"packageUri": "lib/",
|
|
176
|
-
"languageVersion": "3.0"
|
|
177
|
-
},
|
|
178
|
-
{
|
|
179
|
-
"name": "shelf",
|
|
180
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/shelf-1.4.2",
|
|
181
|
-
"packageUri": "lib/",
|
|
182
|
-
"languageVersion": "3.4"
|
|
183
|
-
},
|
|
184
|
-
{
|
|
185
|
-
"name": "shelf_packages_handler",
|
|
186
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/shelf_packages_handler-3.0.2",
|
|
187
|
-
"packageUri": "lib/",
|
|
188
|
-
"languageVersion": "2.17"
|
|
189
|
-
},
|
|
190
|
-
{
|
|
191
|
-
"name": "shelf_static",
|
|
192
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/shelf_static-1.1.3",
|
|
193
|
-
"packageUri": "lib/",
|
|
194
|
-
"languageVersion": "3.3"
|
|
195
|
-
},
|
|
196
|
-
{
|
|
197
|
-
"name": "shelf_web_socket",
|
|
198
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/shelf_web_socket-3.0.0",
|
|
199
|
-
"packageUri": "lib/",
|
|
200
|
-
"languageVersion": "3.5"
|
|
201
|
-
},
|
|
202
|
-
{
|
|
203
|
-
"name": "source_map_stack_trace",
|
|
204
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/source_map_stack_trace-2.1.2",
|
|
205
|
-
"packageUri": "lib/",
|
|
206
|
-
"languageVersion": "3.3"
|
|
207
|
-
},
|
|
208
|
-
{
|
|
209
|
-
"name": "source_maps",
|
|
210
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/source_maps-0.10.13",
|
|
211
|
-
"packageUri": "lib/",
|
|
212
|
-
"languageVersion": "3.3"
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
"name": "source_span",
|
|
216
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/source_span-1.10.2",
|
|
217
|
-
"packageUri": "lib/",
|
|
218
|
-
"languageVersion": "3.1"
|
|
219
|
-
},
|
|
220
|
-
{
|
|
221
|
-
"name": "stack_trace",
|
|
222
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/stack_trace-1.12.1",
|
|
223
|
-
"packageUri": "lib/",
|
|
224
|
-
"languageVersion": "3.4"
|
|
225
|
-
},
|
|
226
|
-
{
|
|
227
|
-
"name": "stream_channel",
|
|
228
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/stream_channel-2.1.4",
|
|
229
|
-
"packageUri": "lib/",
|
|
230
|
-
"languageVersion": "3.3"
|
|
231
|
-
},
|
|
232
|
-
{
|
|
233
|
-
"name": "string_scanner",
|
|
234
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/string_scanner-1.4.1",
|
|
235
|
-
"packageUri": "lib/",
|
|
236
|
-
"languageVersion": "3.1"
|
|
237
|
-
},
|
|
238
|
-
{
|
|
239
|
-
"name": "term_glyph",
|
|
240
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/term_glyph-1.2.2",
|
|
241
|
-
"packageUri": "lib/",
|
|
242
|
-
"languageVersion": "3.1"
|
|
243
|
-
},
|
|
244
|
-
{
|
|
245
|
-
"name": "test",
|
|
246
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/test-1.31.1",
|
|
247
|
-
"packageUri": "lib/",
|
|
248
|
-
"languageVersion": "3.10"
|
|
249
|
-
},
|
|
250
|
-
{
|
|
251
|
-
"name": "test_api",
|
|
252
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/test_api-0.7.12",
|
|
253
|
-
"packageUri": "lib/",
|
|
254
|
-
"languageVersion": "3.10"
|
|
255
|
-
},
|
|
256
|
-
{
|
|
257
|
-
"name": "test_core",
|
|
258
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/test_core-0.6.18",
|
|
259
|
-
"packageUri": "lib/",
|
|
260
|
-
"languageVersion": "3.10"
|
|
261
|
-
},
|
|
262
|
-
{
|
|
263
|
-
"name": "typed_data",
|
|
264
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/typed_data-1.4.0",
|
|
265
|
-
"packageUri": "lib/",
|
|
266
|
-
"languageVersion": "3.5"
|
|
267
|
-
},
|
|
268
|
-
{
|
|
269
|
-
"name": "uri",
|
|
270
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/uri-1.0.0",
|
|
271
|
-
"packageUri": "lib/",
|
|
272
|
-
"languageVersion": "2.12"
|
|
273
|
-
},
|
|
274
|
-
{
|
|
275
|
-
"name": "vm_service",
|
|
276
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/vm_service-15.2.0",
|
|
277
|
-
"packageUri": "lib/",
|
|
278
|
-
"languageVersion": "3.5"
|
|
279
|
-
},
|
|
280
|
-
{
|
|
281
|
-
"name": "watcher",
|
|
282
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/watcher-1.2.1",
|
|
283
|
-
"packageUri": "lib/",
|
|
284
|
-
"languageVersion": "3.4"
|
|
285
|
-
},
|
|
286
|
-
{
|
|
287
|
-
"name": "web",
|
|
288
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/web-1.1.1",
|
|
289
|
-
"packageUri": "lib/",
|
|
290
|
-
"languageVersion": "3.4"
|
|
291
|
-
},
|
|
292
|
-
{
|
|
293
|
-
"name": "web_socket",
|
|
294
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/web_socket-1.0.1",
|
|
295
|
-
"packageUri": "lib/",
|
|
296
|
-
"languageVersion": "3.4"
|
|
297
|
-
},
|
|
298
|
-
{
|
|
299
|
-
"name": "web_socket_channel",
|
|
300
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/web_socket_channel-3.0.3",
|
|
301
|
-
"packageUri": "lib/",
|
|
302
|
-
"languageVersion": "3.3"
|
|
303
|
-
},
|
|
304
|
-
{
|
|
305
|
-
"name": "webkit_inspection_protocol",
|
|
306
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/webkit_inspection_protocol-1.2.1",
|
|
307
|
-
"packageUri": "lib/",
|
|
308
|
-
"languageVersion": "3.0"
|
|
309
|
-
},
|
|
310
|
-
{
|
|
311
|
-
"name": "yaml",
|
|
312
|
-
"rootUri": "file:///Users/jack/.pub-cache/hosted/pub.dev/yaml-3.1.3",
|
|
313
|
-
"packageUri": "lib/",
|
|
314
|
-
"languageVersion": "3.4"
|
|
315
|
-
},
|
|
316
|
-
{
|
|
317
|
-
"name": "nomos_dsl",
|
|
318
|
-
"rootUri": "../",
|
|
319
|
-
"packageUri": "lib/",
|
|
320
|
-
"languageVersion": "3.5"
|
|
321
|
-
}
|
|
322
|
-
],
|
|
323
|
-
"generator": "pub",
|
|
324
|
-
"generatorVersion": "3.11.5",
|
|
325
|
-
"flutterRoot": "file:///opt/homebrew/share/flutter",
|
|
326
|
-
"flutterVersion": "3.41.9",
|
|
327
|
-
"pubCache": "file:///Users/jack/.pub-cache"
|
|
328
|
-
}
|