homegraph 1.1.1 → 1.1.3

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 (179) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +243 -243
  3. package/dist/bin/homegraph.js +371 -9
  4. package/dist/bin/homegraph.js.map +1 -1
  5. package/dist/db/migrations.js +18 -18
  6. package/dist/db/queries.js +140 -140
  7. package/dist/db/schema.sql +152 -152
  8. package/dist/directory.js +5 -5
  9. package/dist/extraction/wasm/tree-sitter-c_sharp.wasm +0 -0
  10. package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
  11. package/dist/installer/instructions-template.js +9 -9
  12. package/dist/installer/targets/deveco.d.ts +7 -2
  13. package/dist/installer/targets/deveco.d.ts.map +1 -1
  14. package/dist/installer/targets/deveco.js +62 -32
  15. package/dist/installer/targets/deveco.js.map +1 -1
  16. package/dist/installer/targets/shared.d.ts +5 -6
  17. package/dist/installer/targets/shared.d.ts.map +1 -1
  18. package/dist/installer/targets/shared.js +5 -6
  19. package/dist/installer/targets/shared.js.map +1 -1
  20. package/dist/mcp/liveness-watchdog.js +16 -16
  21. package/dist/mcp/server-instructions.js +69 -69
  22. package/dist/mcp/tools.d.ts +17 -4
  23. package/dist/mcp/tools.d.ts.map +1 -1
  24. package/dist/mcp/tools.js +192 -22
  25. package/dist/mcp/tools.js.map +1 -1
  26. package/dist/reasoning/reasoner.js +32 -32
  27. package/dist/spec/config.d.ts +43 -0
  28. package/dist/spec/config.d.ts.map +1 -0
  29. package/dist/spec/config.js +275 -0
  30. package/dist/spec/config.js.map +1 -0
  31. package/dist/spec/db/commit-node.d.ts +23 -0
  32. package/dist/spec/db/commit-node.d.ts.map +1 -0
  33. package/dist/spec/db/commit-node.js +62 -0
  34. package/dist/spec/db/commit-node.js.map +1 -0
  35. package/dist/spec/db/fragment-node.d.ts +23 -0
  36. package/dist/spec/db/fragment-node.d.ts.map +1 -0
  37. package/dist/spec/db/fragment-node.js +120 -0
  38. package/dist/spec/db/fragment-node.js.map +1 -0
  39. package/dist/spec/db/fts.d.ts +60 -0
  40. package/dist/spec/db/fts.d.ts.map +1 -0
  41. package/dist/spec/db/fts.js +285 -0
  42. package/dist/spec/db/fts.js.map +1 -0
  43. package/dist/spec/db/index.d.ts +13 -0
  44. package/dist/spec/db/index.d.ts.map +1 -0
  45. package/dist/spec/db/index.js +50 -0
  46. package/dist/spec/db/index.js.map +1 -0
  47. package/dist/spec/db/relations.d.ts +55 -0
  48. package/dist/spec/db/relations.d.ts.map +1 -0
  49. package/dist/spec/db/relations.js +158 -0
  50. package/dist/spec/db/relations.js.map +1 -0
  51. package/dist/spec/db/schema.d.ts +30 -0
  52. package/dist/spec/db/schema.d.ts.map +1 -0
  53. package/dist/spec/db/schema.js +87 -0
  54. package/dist/spec/db/schema.js.map +1 -0
  55. package/dist/spec/db/schema.sql +107 -0
  56. package/dist/spec/db/spec-node.d.ts +41 -0
  57. package/dist/spec/db/spec-node.d.ts.map +1 -0
  58. package/dist/spec/db/spec-node.js +114 -0
  59. package/dist/spec/db/spec-node.js.map +1 -0
  60. package/dist/spec/evolve/impact-locator.d.ts +13 -0
  61. package/dist/spec/evolve/impact-locator.d.ts.map +1 -0
  62. package/dist/spec/evolve/impact-locator.js +25 -0
  63. package/dist/spec/evolve/impact-locator.js.map +1 -0
  64. package/dist/spec/evolve/llm-client.d.ts +50 -0
  65. package/dist/spec/evolve/llm-client.d.ts.map +1 -0
  66. package/dist/spec/evolve/llm-client.js +176 -0
  67. package/dist/spec/evolve/llm-client.js.map +1 -0
  68. package/dist/spec/evolve/logic-checker.d.ts +12 -0
  69. package/dist/spec/evolve/logic-checker.d.ts.map +1 -0
  70. package/dist/spec/evolve/logic-checker.js +48 -0
  71. package/dist/spec/evolve/logic-checker.js.map +1 -0
  72. package/dist/spec/evolve/pipeline.d.ts +40 -0
  73. package/dist/spec/evolve/pipeline.d.ts.map +1 -0
  74. package/dist/spec/evolve/pipeline.js +314 -0
  75. package/dist/spec/evolve/pipeline.js.map +1 -0
  76. package/dist/spec/evolve/spec-rewriter.d.ts +42 -0
  77. package/dist/spec/evolve/spec-rewriter.d.ts.map +1 -0
  78. package/dist/spec/evolve/spec-rewriter.js +254 -0
  79. package/dist/spec/evolve/spec-rewriter.js.map +1 -0
  80. package/dist/spec/graph/queries.d.ts +58 -0
  81. package/dist/spec/graph/queries.d.ts.map +1 -0
  82. package/dist/spec/graph/queries.js +215 -0
  83. package/dist/spec/graph/queries.js.map +1 -0
  84. package/dist/spec/mining/diff-parser.d.ts +33 -0
  85. package/dist/spec/mining/diff-parser.d.ts.map +1 -0
  86. package/dist/spec/mining/diff-parser.js +166 -0
  87. package/dist/spec/mining/diff-parser.js.map +1 -0
  88. package/dist/spec/mining/git-scanner.d.ts +91 -0
  89. package/dist/spec/mining/git-scanner.d.ts.map +1 -0
  90. package/dist/spec/mining/git-scanner.js +266 -0
  91. package/dist/spec/mining/git-scanner.js.map +1 -0
  92. package/dist/spec/mining/pipeline.d.ts +53 -0
  93. package/dist/spec/mining/pipeline.d.ts.map +1 -0
  94. package/dist/spec/mining/pipeline.js +165 -0
  95. package/dist/spec/mining/pipeline.js.map +1 -0
  96. package/dist/spec/mining/scope-resolver.d.ts +45 -0
  97. package/dist/spec/mining/scope-resolver.d.ts.map +1 -0
  98. package/dist/spec/mining/scope-resolver.js +103 -0
  99. package/dist/spec/mining/scope-resolver.js.map +1 -0
  100. package/dist/spec/mining/spec-extractor.d.ts +69 -0
  101. package/dist/spec/mining/spec-extractor.d.ts.map +1 -0
  102. package/dist/spec/mining/spec-extractor.js +369 -0
  103. package/dist/spec/mining/spec-extractor.js.map +1 -0
  104. package/dist/spec/types.d.ts +149 -0
  105. package/dist/spec/types.d.ts.map +1 -0
  106. package/dist/spec/types.js +15 -0
  107. package/dist/spec/types.js.map +1 -0
  108. package/dist/spec/utils.d.ts +166 -0
  109. package/dist/spec/utils.d.ts.map +1 -0
  110. package/dist/spec/utils.js +461 -0
  111. package/dist/spec/utils.js.map +1 -0
  112. package/package.json +58 -57
  113. package/scripts/add-lang/bench.sh +60 -60
  114. package/scripts/add-lang/check-grammar.mjs +75 -75
  115. package/scripts/add-lang/dump-ast.mjs +103 -103
  116. package/scripts/add-lang/verify-extraction.mjs +70 -70
  117. package/scripts/agent-eval/ab-adoption.sh +91 -91
  118. package/scripts/agent-eval/ab-hook.sh +86 -86
  119. package/scripts/agent-eval/ab-impl.sh +78 -78
  120. package/scripts/agent-eval/ab-new-vs-baseline.sh +102 -102
  121. package/scripts/agent-eval/ab-sufficiency.sh +78 -78
  122. package/scripts/agent-eval/arms-F.sh +21 -21
  123. package/scripts/agent-eval/arms-matrix.sh +37 -37
  124. package/scripts/agent-eval/audit.sh +68 -68
  125. package/scripts/agent-eval/bench-readme.sh +28 -28
  126. package/scripts/agent-eval/bench-why-repo.sh +22 -22
  127. package/scripts/agent-eval/block-read-hook.sh +19 -19
  128. package/scripts/agent-eval/hook-settings.json +15 -15
  129. package/scripts/agent-eval/itrun.sh +120 -120
  130. package/scripts/agent-eval/offload-eval-3arm.sh +72 -72
  131. package/scripts/agent-eval/offload-eval-cost.mjs +133 -133
  132. package/scripts/agent-eval/offload-eval-effort.mjs +108 -108
  133. package/scripts/agent-eval/offload-eval-frontload-matrix.sh +25 -25
  134. package/scripts/agent-eval/offload-eval-frontload.sh +47 -47
  135. package/scripts/agent-eval/offload-eval-ground-truth.json +18 -18
  136. package/scripts/agent-eval/offload-eval-hook.mjs +84 -84
  137. package/scripts/agent-eval/offload-eval-judge.mjs +103 -103
  138. package/scripts/agent-eval/offload-eval-matrix.sh +20 -20
  139. package/scripts/agent-eval/offload-eval-metrics.mjs +94 -94
  140. package/scripts/agent-eval/offload-eval-refs1.sh +50 -50
  141. package/scripts/agent-eval/offload-eval-setup.sh +24 -24
  142. package/scripts/agent-eval/offload-eval-styles.sh +71 -71
  143. package/scripts/agent-eval/offload-eval-summarize.mjs +68 -68
  144. package/scripts/agent-eval/offload-eval.md +76 -76
  145. package/scripts/agent-eval/parse-arms.mjs +116 -116
  146. package/scripts/agent-eval/parse-bench-readme.mjs +84 -84
  147. package/scripts/agent-eval/parse-run.mjs +45 -45
  148. package/scripts/agent-eval/parse-session.mjs +93 -93
  149. package/scripts/agent-eval/probe-context.mjs +21 -21
  150. package/scripts/agent-eval/probe-explore.mjs +40 -40
  151. package/scripts/agent-eval/probe-node.mjs +20 -20
  152. package/scripts/agent-eval/probe-sweep.mjs +119 -119
  153. package/scripts/agent-eval/probe-trace.mjs +20 -20
  154. package/scripts/agent-eval/redirect-read-hook.sh +38 -38
  155. package/scripts/agent-eval/run-agent.sh +34 -34
  156. package/scripts/agent-eval/run-all.sh +69 -69
  157. package/scripts/agent-eval/run-arms.sh +56 -56
  158. package/scripts/agent-eval/seq-matrix.mjs +137 -137
  159. package/scripts/build-bundle.sh +118 -118
  160. package/scripts/extract-release-notes.mjs +130 -130
  161. package/scripts/local-install.sh +41 -41
  162. package/scripts/npm-sdk.js +75 -75
  163. package/scripts/npm-shim.js +246 -246
  164. package/scripts/pack-npm.sh +119 -119
  165. package/scripts/prepare-release.mjs +270 -270
  166. package/scripts/qa_eval/README.md +407 -400
  167. package/scripts/qa_eval/_test_deveco_probe.py +41 -0
  168. package/scripts/qa_eval/agent_runner.py +526 -526
  169. package/scripts/qa_eval/data/.gitignore +4 -4
  170. package/scripts/qa_eval/data/test-set.jsonl +2 -22
  171. package/scripts/qa_eval/eval_metrics.py +274 -233
  172. package/scripts/qa_eval/external_agent.py +976 -577
  173. package/scripts/qa_eval/llm_config.py +92 -92
  174. package/scripts/qa_eval/memory_monitor.py +132 -132
  175. package/scripts/qa_eval/my_answer_accuracy.py +187 -187
  176. package/scripts/qa_eval/requirements.txt +2 -2
  177. package/scripts/qa_eval/run_pipeline.py +804 -702
  178. package/scripts/qa_eval/stats_efficiency.py +279 -279
  179. package/scripts/qa_eval/stats_scores.py +207 -207
@@ -1,119 +1,119 @@
1
- #!/usr/bin/env bash
2
- #
3
- # Assemble the npm thin-installer packages from built bundles (esbuild pattern).
4
- #
5
- # Produces, under release/npm/:
6
- # homegraph-<target>/ one per built bundle — the vendored Node + app, tagged
7
- # with os/cpu so npm installs only the matching one.
8
- # main/ the homegraph shim package: a tiny bin
9
- # that execs the matching platform bundle, with every
10
- # platform package in optionalDependencies.
11
- #
12
- # The release pipeline then `npm publish`es each dir. This does NOT touch the
13
- # repo's package.json — the dev/from-source path keeps working; the *published*
14
- # main package's shape is generated here.
15
- #
16
- # Prereq: run build-bundle.sh for each target first (release/homegraph-*.tar.gz).
17
- # Usage: scripts/pack-npm.sh [version] (default: version from package.json)
18
- set -euo pipefail
19
-
20
- ROOT="$(cd "$(dirname "$0")/.." && pwd)"
21
- VERSION="${1:-$(node -p "require('$ROOT/package.json').version")}"
22
- SCOPE="@colbymchenry"
23
- REL="$ROOT/release"
24
- NPM="$REL/npm"
25
-
26
- rm -rf "$NPM"
27
- mkdir -p "$NPM/main"
28
-
29
- shopt -s nullglob
30
- archives=("$REL"/homegraph-*.tar.gz "$REL"/homegraph-*.zip)
31
- [ ${#archives[@]} -gt 0 ] || { echo "[pack-npm] no bundles in $REL — run build-bundle.sh first" >&2; exit 1; }
32
-
33
- targets=()
34
- for archive in "${archives[@]}"; do
35
- fname="$(basename "$archive")"
36
- case "$fname" in
37
- *.tar.gz) base="${fname%.tar.gz}" ;; # homegraph-<target>
38
- *.zip) base="${fname%.zip}" ;;
39
- esac
40
- target="${base#homegraph-}" # <target>, e.g. darwin-arm64 / win32-x64
41
- os="${target%-*}" # darwin | linux | win32
42
- arch="${target##*-}" # arm64 | x64
43
- pkgdir="$NPM/$base"
44
- mkdir -p "$pkgdir"
45
- case "$fname" in
46
- *.zip)
47
- tmpx="$(mktemp -d)"
48
- unzip -q "$archive" -d "$tmpx"
49
- mv "$tmpx/homegraph-${target}"/* "$pkgdir"/
50
- rm -rf "$tmpx"
51
- nodefile="node.exe"
52
- ;;
53
- *)
54
- tar -xzf "$archive" -C "$pkgdir" --strip-components=1
55
- nodefile="node"
56
- ;;
57
- esac
58
- VERSION="$VERSION" SCOPE="$SCOPE" TARGET="$target" OSV="$os" ARCHV="$arch" NODEFILE="$nodefile" \
59
- node -e '
60
- const fs=require("fs");
61
- fs.writeFileSync(process.argv[1], JSON.stringify({
62
- name: `${process.env.SCOPE}/homegraph-${process.env.TARGET}`,
63
- version: process.env.VERSION,
64
- description: `HomeGraph self-contained bundle for ${process.env.TARGET}`,
65
- os: [process.env.OSV], cpu: [process.env.ARCHV],
66
- files: [process.env.NODEFILE, "lib", "bin"],
67
- license: "MIT"
68
- }, null, 2) + "\n");
69
- ' "$pkgdir/package.json"
70
- targets+=("$target")
71
- echo "[pack-npm] ${SCOPE}/homegraph-${target}@${VERSION}"
72
- done
73
-
74
- # Main shim package.
75
- # npm-shim.js CLI/MCP launcher (execs the bundled Node) — the `bin`.
76
- # npm-sdk.js programmatic/embedded entry (#354): re-exports the installed
77
- # platform bundle's compiled library — the `main`.
78
- # dist/ the .d.ts tree only (types). The runtime .js stays in the
79
- # per-platform bundle so its deps aren't duplicated here.
80
- cp "$ROOT/scripts/npm-shim.js" "$NPM/main/npm-shim.js"
81
- cp "$ROOT/scripts/npm-sdk.js" "$NPM/main/npm-sdk.js"
82
- [ -f "$ROOT/README.md" ] && cp "$ROOT/README.md" "$NPM/main/README.md"
83
-
84
- # Ship the type declarations so `types`/`exports.types` resolve. Built from this
85
- # same release, so they can't skew from the runtime npm-sdk.js re-exports.
86
- [ -f "$ROOT/dist/index.d.ts" ] || ( echo "[pack-npm] building dist for .d.ts" >&2 && cd "$ROOT" && npm run build >/dev/null )
87
- ROOT="$ROOT" DEST="$NPM/main" node -e '
88
- const fs=require("fs"), path=require("path");
89
- const src=path.join(process.env.ROOT,"dist"), dest=path.join(process.env.DEST,"dist");
90
- fs.cpSync(src, dest, { recursive:true, filter(s){
91
- try { return fs.statSync(s).isDirectory() || s.endsWith(".d.ts"); } catch (e) { return false; }
92
- }});
93
- '
94
-
95
- VERSION="$VERSION" SCOPE="$SCOPE" TARGETS="${targets[*]}" \
96
- node -e '
97
- const fs=require("fs");
98
- const opt={};
99
- for (const t of process.env.TARGETS.split(/\s+/).filter(Boolean))
100
- opt[`${process.env.SCOPE}/homegraph-${t}`]=process.env.VERSION;
101
- fs.writeFileSync(process.argv[1], JSON.stringify({
102
- name: `${process.env.SCOPE}/homegraph`,
103
- version: process.env.VERSION,
104
- description: "Local-first code intelligence for AI agents (MCP). Self-contained — bundles its own runtime.",
105
- bin: { homegraph: "npm-shim.js" },
106
- main: "npm-sdk.js",
107
- types: "dist/index.d.ts",
108
- exports: {
109
- ".": { types: "./dist/index.d.ts", default: "./npm-sdk.js" },
110
- "./package.json": "./package.json"
111
- },
112
- optionalDependencies: opt,
113
- files: ["npm-shim.js","npm-sdk.js","dist","README.md"],
114
- license: "MIT"
115
- }, null, 2) + "\n");
116
- ' "$NPM/main/package.json"
117
-
118
- echo "[pack-npm] ${SCOPE}/homegraph@${VERSION} (${#targets[@]} platform packages in optionalDependencies)"
119
- echo "[pack-npm] output: $NPM"
1
+ #!/usr/bin/env bash
2
+ #
3
+ # Assemble the npm thin-installer packages from built bundles (esbuild pattern).
4
+ #
5
+ # Produces, under release/npm/:
6
+ # homegraph-<target>/ one per built bundle — the vendored Node + app, tagged
7
+ # with os/cpu so npm installs only the matching one.
8
+ # main/ the homegraph shim package: a tiny bin
9
+ # that execs the matching platform bundle, with every
10
+ # platform package in optionalDependencies.
11
+ #
12
+ # The release pipeline then `npm publish`es each dir. This does NOT touch the
13
+ # repo's package.json — the dev/from-source path keeps working; the *published*
14
+ # main package's shape is generated here.
15
+ #
16
+ # Prereq: run build-bundle.sh for each target first (release/homegraph-*.tar.gz).
17
+ # Usage: scripts/pack-npm.sh [version] (default: version from package.json)
18
+ set -euo pipefail
19
+
20
+ ROOT="$(cd "$(dirname "$0")/.." && pwd)"
21
+ VERSION="${1:-$(node -p "require('$ROOT/package.json').version")}"
22
+ SCOPE="@colbymchenry"
23
+ REL="$ROOT/release"
24
+ NPM="$REL/npm"
25
+
26
+ rm -rf "$NPM"
27
+ mkdir -p "$NPM/main"
28
+
29
+ shopt -s nullglob
30
+ archives=("$REL"/homegraph-*.tar.gz "$REL"/homegraph-*.zip)
31
+ [ ${#archives[@]} -gt 0 ] || { echo "[pack-npm] no bundles in $REL — run build-bundle.sh first" >&2; exit 1; }
32
+
33
+ targets=()
34
+ for archive in "${archives[@]}"; do
35
+ fname="$(basename "$archive")"
36
+ case "$fname" in
37
+ *.tar.gz) base="${fname%.tar.gz}" ;; # homegraph-<target>
38
+ *.zip) base="${fname%.zip}" ;;
39
+ esac
40
+ target="${base#homegraph-}" # <target>, e.g. darwin-arm64 / win32-x64
41
+ os="${target%-*}" # darwin | linux | win32
42
+ arch="${target##*-}" # arm64 | x64
43
+ pkgdir="$NPM/$base"
44
+ mkdir -p "$pkgdir"
45
+ case "$fname" in
46
+ *.zip)
47
+ tmpx="$(mktemp -d)"
48
+ unzip -q "$archive" -d "$tmpx"
49
+ mv "$tmpx/homegraph-${target}"/* "$pkgdir"/
50
+ rm -rf "$tmpx"
51
+ nodefile="node.exe"
52
+ ;;
53
+ *)
54
+ tar -xzf "$archive" -C "$pkgdir" --strip-components=1
55
+ nodefile="node"
56
+ ;;
57
+ esac
58
+ VERSION="$VERSION" SCOPE="$SCOPE" TARGET="$target" OSV="$os" ARCHV="$arch" NODEFILE="$nodefile" \
59
+ node -e '
60
+ const fs=require("fs");
61
+ fs.writeFileSync(process.argv[1], JSON.stringify({
62
+ name: `${process.env.SCOPE}/homegraph-${process.env.TARGET}`,
63
+ version: process.env.VERSION,
64
+ description: `HomeGraph self-contained bundle for ${process.env.TARGET}`,
65
+ os: [process.env.OSV], cpu: [process.env.ARCHV],
66
+ files: [process.env.NODEFILE, "lib", "bin"],
67
+ license: "MIT"
68
+ }, null, 2) + "\n");
69
+ ' "$pkgdir/package.json"
70
+ targets+=("$target")
71
+ echo "[pack-npm] ${SCOPE}/homegraph-${target}@${VERSION}"
72
+ done
73
+
74
+ # Main shim package.
75
+ # npm-shim.js CLI/MCP launcher (execs the bundled Node) — the `bin`.
76
+ # npm-sdk.js programmatic/embedded entry (#354): re-exports the installed
77
+ # platform bundle's compiled library — the `main`.
78
+ # dist/ the .d.ts tree only (types). The runtime .js stays in the
79
+ # per-platform bundle so its deps aren't duplicated here.
80
+ cp "$ROOT/scripts/npm-shim.js" "$NPM/main/npm-shim.js"
81
+ cp "$ROOT/scripts/npm-sdk.js" "$NPM/main/npm-sdk.js"
82
+ [ -f "$ROOT/README.md" ] && cp "$ROOT/README.md" "$NPM/main/README.md"
83
+
84
+ # Ship the type declarations so `types`/`exports.types` resolve. Built from this
85
+ # same release, so they can't skew from the runtime npm-sdk.js re-exports.
86
+ [ -f "$ROOT/dist/index.d.ts" ] || ( echo "[pack-npm] building dist for .d.ts" >&2 && cd "$ROOT" && npm run build >/dev/null )
87
+ ROOT="$ROOT" DEST="$NPM/main" node -e '
88
+ const fs=require("fs"), path=require("path");
89
+ const src=path.join(process.env.ROOT,"dist"), dest=path.join(process.env.DEST,"dist");
90
+ fs.cpSync(src, dest, { recursive:true, filter(s){
91
+ try { return fs.statSync(s).isDirectory() || s.endsWith(".d.ts"); } catch (e) { return false; }
92
+ }});
93
+ '
94
+
95
+ VERSION="$VERSION" SCOPE="$SCOPE" TARGETS="${targets[*]}" \
96
+ node -e '
97
+ const fs=require("fs");
98
+ const opt={};
99
+ for (const t of process.env.TARGETS.split(/\s+/).filter(Boolean))
100
+ opt[`${process.env.SCOPE}/homegraph-${t}`]=process.env.VERSION;
101
+ fs.writeFileSync(process.argv[1], JSON.stringify({
102
+ name: `${process.env.SCOPE}/homegraph`,
103
+ version: process.env.VERSION,
104
+ description: "Local-first code intelligence for AI agents (MCP). Self-contained — bundles its own runtime.",
105
+ bin: { homegraph: "npm-shim.js" },
106
+ main: "npm-sdk.js",
107
+ types: "dist/index.d.ts",
108
+ exports: {
109
+ ".": { types: "./dist/index.d.ts", default: "./npm-sdk.js" },
110
+ "./package.json": "./package.json"
111
+ },
112
+ optionalDependencies: opt,
113
+ files: ["npm-shim.js","npm-sdk.js","dist","README.md"],
114
+ license: "MIT"
115
+ }, null, 2) + "\n");
116
+ ' "$NPM/main/package.json"
117
+
118
+ echo "[pack-npm] ${SCOPE}/homegraph@${VERSION} (${#targets[@]} platform packages in optionalDependencies)"
119
+ echo "[pack-npm] output: $NPM"