@numairbaseer/scifcode 0.2.0 → 0.3.1
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/README.md +53 -3
- package/package.json +4 -3
- package/sbom/SHA256SUMS +1 -0
- package/sbom/SHA256SUMS.sigstore.json +1 -0
- package/sbom/scifcode-0.3.1-all-platforms.cdx.json +677 -0
- package/src/cli.js +2 -8
- package/src/code-usage.js +86 -0
- package/src/constants.js +2 -2
- package/src/run-runtime.js +34 -3
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Scifcode is the user-facing configuration wrapper for the Scifcode coding agent powered by Poolside Laguna.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
It installs one global `scifcode` command, configures the Scifcode runtime to use Laguna, and launches the coding agent with Scifcode defaults.
|
|
6
6
|
|
|
7
7
|
## Install
|
|
8
8
|
|
|
@@ -21,6 +21,49 @@ Supported runtime packages cover:
|
|
|
21
21
|
- Windows: arm64 and x64
|
|
22
22
|
- baseline x64 builds for CPUs without AVX2
|
|
23
23
|
|
|
24
|
+
## Offline install and update
|
|
25
|
+
|
|
26
|
+
Each `v*` GitHub release includes platform archives containing a standalone
|
|
27
|
+
`scifcode` launcher and its pinned `scifcode-runtime`. The target machine does
|
|
28
|
+
not need Node.js, Bun, npm, or network access.
|
|
29
|
+
|
|
30
|
+
Transfer the archive, the versioned offline `SHA256SUMS` file, and its
|
|
31
|
+
`.sigstore.json` bundle through the approved media process. Verify the signed
|
|
32
|
+
checksum manifest and the archive, then extract it and run the included
|
|
33
|
+
installer:
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
cosign verify-blob scifcode-0.3.1-offline-SHA256SUMS \
|
|
37
|
+
--bundle scifcode-0.3.1-offline-SHA256SUMS.sigstore.json \
|
|
38
|
+
--certificate-identity \
|
|
39
|
+
https://github.com/numairbaseer/scifcode/.github/workflows/release-cli.yml@refs/tags/v0.3.1 \
|
|
40
|
+
--certificate-oidc-issuer https://token.actions.githubusercontent.com
|
|
41
|
+
sha256sum -c scifcode-0.3.1-offline-SHA256SUMS
|
|
42
|
+
tar -xzf scifcode-0.3.1-linux-x64-baseline.tar.gz
|
|
43
|
+
cd scifcode-0.3.1-linux-x64-baseline
|
|
44
|
+
./install.sh
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
On Windows, extract the archive and run:
|
|
48
|
+
|
|
49
|
+
```powershell
|
|
50
|
+
.\install.ps1
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Installing a newer archive performs an offline update. Versions are retained
|
|
54
|
+
under the installation root so an administrator can restore an earlier
|
|
55
|
+
version. Unix installs default to `~/.local/share/scifcode`; Windows installs
|
|
56
|
+
default to `%LOCALAPPDATA%\Programs\Scifcode`.
|
|
57
|
+
|
|
58
|
+
The release workflow signs every offline archive and the release-level
|
|
59
|
+
checksum manifest with a keyless Sigstore certificate tied to the tagged
|
|
60
|
+
GitHub Actions workflow. It verifies every signature before publishing the
|
|
61
|
+
release assets; no long-lived signing key is required.
|
|
62
|
+
|
|
63
|
+
Publish the runtime version pinned in `package.json` before tagging the CLI.
|
|
64
|
+
The CLI workflow downloads that exact platform runtime package, compiles the
|
|
65
|
+
launcher, and attaches the completed offline archives to the CLI release.
|
|
66
|
+
|
|
24
67
|
## Log in
|
|
25
68
|
|
|
26
69
|
Authenticate once through the Scifcode control-plane portal. The CLI opens a
|
|
@@ -67,8 +110,8 @@ This happens before the runtime launches, so no separate initialization command
|
|
|
67
110
|
| --- | ---: | --- | --- |
|
|
68
111
|
| `SCIFCODE_CONTROL_PLANE_URL` | no | `http://localhost:8080` | Alternative to `login --control-plane`; useful for managed installation and automation |
|
|
69
112
|
| `SCIFCODE_SESSION_TOKEN` | no | stored login session | Ephemeral process override for the control-plane session |
|
|
70
|
-
| `SCIFCODE_CONTEXT_WINDOW` | no | `32768` | Context window reported for `
|
|
71
|
-
| `SCIFCODE_MAX_TOKENS` | no | `8192` | Maximum output tokens reported for `
|
|
113
|
+
| `SCIFCODE_CONTEXT_WINDOW` | no | `32768` | Context window reported for `scifcoder-1.0` |
|
|
114
|
+
| `SCIFCODE_MAX_TOKENS` | no | `8192` | Maximum output tokens reported for `scifcoder-1.0` |
|
|
72
115
|
| `SCIFCODE_RUNTIME_BIN` | no | installed platform package | Override path to a compiled Scifcode runtime binary |
|
|
73
116
|
| `SCIFCODE_SOURCE_DIR` | no | adjacent `../scifcode` | Development-only path to the Scifcode source fork |
|
|
74
117
|
| `SCIFCODE_BUN_BIN` | no | auto-detected | Development-only Bun executable used to run the fork from source |
|
|
@@ -126,6 +169,13 @@ Scifcode launches the installed platform runtime directly with argument arrays
|
|
|
126
169
|
and does not use shell string execution. Bun/source execution remains available
|
|
127
170
|
only as a local-development fallback.
|
|
128
171
|
|
|
172
|
+
For usage analytics, Scifcode snapshots the Git working tree when an agent
|
|
173
|
+
session starts and reports the aggregate number of added and deleted lines when
|
|
174
|
+
the session ends. The snapshot uses an isolated temporary Git index, so staged,
|
|
175
|
+
unstaged, and untracked work that existed before the session is preserved and
|
|
176
|
+
excluded from the count. Source code and file names are never sent to the
|
|
177
|
+
control plane.
|
|
178
|
+
|
|
129
179
|
## Third-party notices
|
|
130
180
|
|
|
131
181
|
Scifcode uses third-party open-source software internally. See `THIRD_PARTY_NOTICES.md`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@numairbaseer/scifcode",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Scifcode: a coding CLI agent powered by Poolside Laguna.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
@@ -18,17 +18,18 @@
|
|
|
18
18
|
"bin",
|
|
19
19
|
"src",
|
|
20
20
|
"assets",
|
|
21
|
+
"sbom",
|
|
21
22
|
"README.md",
|
|
22
23
|
"LICENSE",
|
|
23
24
|
"THIRD_PARTY_NOTICES.md"
|
|
24
25
|
],
|
|
25
26
|
"scripts": {
|
|
26
27
|
"test": "node --test",
|
|
27
|
-
"lint": "node --check bin/scifcode.js && node --check src/cli.js && node --check src/constants.js && node --check src/control-plane-auth.js && node --check src/env-config.js && node --check src/ensure-scifcode-config.js && node --check src/paths.js && node --check src/run-runtime.js",
|
|
28
|
+
"lint": "node --check bin/scifcode.js && node --check src/cli.js && node --check src/code-usage.js && node --check src/constants.js && node --check src/control-plane-auth.js && node --check src/env-config.js && node --check src/ensure-scifcode-config.js && node --check src/paths.js && node --check src/run-runtime.js",
|
|
28
29
|
"prepack": "npm test && npm run lint"
|
|
29
30
|
},
|
|
30
31
|
"dependencies": {
|
|
31
|
-
"@numairbaseer/scifcode-runtime": "0.
|
|
32
|
+
"@numairbaseer/scifcode-runtime": "0.3.0"
|
|
32
33
|
},
|
|
33
34
|
"engines": {
|
|
34
35
|
"node": ">=22.19.0"
|
package/sbom/SHA256SUMS
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
5beb76ad4360faf39923650154f96ee29ded1d8906c6d79b261d7d3f1fda8dbf scifcode-0.3.1-all-platforms.cdx.json
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"mediaType":"application/vnd.dev.sigstore.bundle.v0.3+json","verificationMaterial":{"certificate":{"rawBytes":"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"},"tlogEntries":[{"logIndex":"2670411872","logId":{"keyId":"wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="},"kindVersion":{"kind":"hashedrekord","version":"0.0.1"},"integratedTime":"1788228646","inclusionPromise":{"signedEntryTimestamp":"MEYCIQDeIPHDGbBDrT/m2ZoSY/dbYzWLvZfNnYZxOjC9B5Jm2QIhAK9rppYhd66VCtuWvP89kIZAFhA+LsEpnSNFhGqvYRbN"},"inclusionProof":{"logIndex":"2548507610","rootHash":"T1hVm5Lc3d7fxEJnT0vZGQnGT1wpRmvDoM82e/n7Trs=","treeSize":"2548507621","hashes":["gzrVdbRVYdpDYfyKfkyYcdHwvW5kXzgdzpDosoathzc=","fBOeOdh0ALzbBEb1xpuKC0dj5uB1sf9/L5VD6AXw2dA=","/UafA0mVumaLdy5pHOmqNPrJuA0/MyaPmv66FU+UrKY=","4qSIsYbu+jJRQLPIyWdcwX1JOL932GlxMfTbN9P1ILU=","kefwyD4VVZ6zJ6lM6lBkCRYHlrWBzt0Xd7iTLSwOZZI=","s27wSf9BtallmmRNl1Vw5CCB31c+iNqbZjr6WRd/AHY=","g1XF/Cx8/L7zdSwJ3ZaRl7MinXzpKpwq7dFnc35g3Qs=","LaUpfWF691yffmNygzUYYFcpCC7k3qPCitIVLPoT1Cs=","vdpV1ekwa/0Trf5VU4mKX7PGA9b73/vpM8+FXGvKzSE=","oWYAl2jSrRUQEAa3+fdE49fU0P9jgvjM87YVoOHCBTc=","XVeI+RQJkmWTR3ECAxsWEv0r8XKYqVbwRNylmkn3Ztw=","8IqZjcuovBbRPA+94+DQEZJsh/4likdrpfmNVDIBgP8=","p07sZPiNhS3OKedAe6eZnpNiY4alN/6vFHSwmzD+XeM=","0x+NthETNYNp/FuWTune0hSsB75R/jw5TVMLuguVBt0=","xyOt2GKNFZJCSWNl1S4wKoCid/PFKOYR1XcNE/ZPkJ8=","zY/PhpISrIBFRZyHncbk1o+GE9n0L8P+0JwBnaBs+FM=","88k9bhVfFtycpvkQKEbIw1Ql9DnXkT/cvWFa/NEgXeQ=","fABv5KbTDQGTSJg+5k8zHZQKwnOUQHo6srePRzgEpf8=","ddECIA46kQzLbMwjR1L9WCHUWrsqVGYIgRiw6XlG1xs=","0HfdxDt/zGugZLIuHasrdLEW9s8OaTykSSqBEDFQXdw=","SndbMKVtcTenAkwi2JBfGzD+mhexp1qJbRIY+A1JRIU=","xH/DCseLHr9eKoYT8qsORZK7zVdEGYWHuVtsVrD95wY="],"checkpoint":{"envelope":"rekor.sigstore.dev - 1193050959916656506\n2548507621\nT1hVm5Lc3d7fxEJnT0vZGQnGT1wpRmvDoM82e/n7Trs=\n\n— rekor.sigstore.dev wNI9ajBGAiEAyMujrvFM3K+ol2G8fCbHNCs+Ev1t4ke/XzgFpIloFP4CIQDGQa13BCdLmR6XqmN+8ye+pfgkqr6eZY2dFuMChWzWYw==\n"}},"canonicalizedBody":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiJjZjhlZjRmYzA0YWQ4ZTRjYjlkZDIyYWY1Mzc2ZmQxYzEwYmNhYzczODNlNWIzY2I3YzdkMDBmMGE3YzJhODhhIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUNEZFdRZ0s4RFNtd2MvaFNEOE5OakRuMjk4TEVHVFdnR0Rza3VVVzh4eUJRSWdJM21ZTFJpNThoTnlBOEZvcEFkSi9hN2ZwcDhPNUFTZjJrcUlmdk0yNWRRPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVaFNWRU5EUW5OMVowRjNTVUpCWjBsVlIwRk9WVVZMVTNSMU9GWmtkRGQ0V2pOU1Uyd3ZjMmRRYkRkSmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFpkMDlVUVhoTlJFbDRUVVJSTWxkb1kwNU5hbGwzVDFSQmVFMUVTWGxOUkZFeVYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZSV1dnNVJWaEpSalkyYzNaVFNXODBUM05CWVhRMFpqbEJOVEpqWjFGMWVsbFFjVUlLY2pVNFEwTlROelI1TDJSSVJrdHpNemt4U21wUFRITnllWHBLWkRKb1ZHMWpXSFJOZDBaRWJDOXdNa00wTVhSWVVVdFBRMEpsYjNkbloxaHRUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlY0Um1kb0NsQlBTazlJT0dSdWRIVjNja1ZuWWt0SlIwUmFTV2hCZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDJGUldVUldVakJTUVZGSUwwSkdPSGRZV1ZwaVlVaFNNR05JVFRaTWVUbHVZVmhTYjJSWFNYVlpNamwwVERJMU1XSlhSbkJqYlVwb1l6SldiQXBqYVRsNldUSnNiVmt5T1d0YVV6aDFXakpzTUdGSVZtbE1NMlIyWTIxMGJXSkhPVE5qZVRsNVdsZDRiRmxZVG14TVYwNXpZVk0xTldKWGVFRmpiVlp0Q21ONU9UQlpWMlI2VEROWmQweHFUWFZOVkVFMVFtZHZja0puUlVWQldVOHZUVUZGUWtKRGRHOWtTRkozWTNwdmRrd3pVblpoTWxaMVRHMUdhbVJIYkhZS1ltNU5kVm95YkRCaFNGWnBaRmhPYkdOdFRuWmlibEpzWW01UmRWa3lPWFJOUWtsSFEybHpSMEZSVVVKbk56aDNRVkZKUlVKSVFqRmpNbWQzVG1kWlN3cExkMWxDUWtGSFJIWjZRVUpCZDFGdlRXcFdhMDV0VFhwT2JWRjRUMFJKZDAxRVNYaGFWRkV6VFdwak1FOUVUbXhOVkd0NlQxUldhMDlFWTNkYWFtTjVDazFYUlRKWmVrRnFRbWR2Y2tKblJVVkJXVTh2VFVGRlJVSkNWbE5hVjNoc1dWaE9iRWxHVGtSVFZWbG5VVEk1YTFwVFFrUlVSV3QzU1hkWlMwdDNXVUlLUWtGSFJIWjZRVUpDVVZGV1ltNVdkRmxYYkhsWmJVWjZXbGRXZVV3elRtcGhWMXBxWWpKU2JFMUNORWREYVhOSFFWRlJRbWMzT0hkQlVWbEZSVWhLYkFwYWJrMTJaRWRHYm1ONU9USk5RelI2VEdwRmQwOTNXVXRMZDFsQ1FrRkhSSFo2UVVKRFFWRjBSRU4wYjJSSVVuZGplbTkyVEROU2RtRXlWblZNYlVacUNtUkhiSFppYmsxMVdqSnNNR0ZJVm1sa1dFNXNZMjFPZG1KdVVteGlibEYxV1RJNWRFMUhjMGREYVhOSFFWRlJRbWMzT0hkQlVXdEZXRkY0WW1GSVVqQUtZMGhOTmt4NU9XNWhXRkp2WkZkSmRWa3lPWFJNTWpVeFlsZEdjR050U21oak1sWnNZMms1ZWxreWJHMVpNamxyV2xNNGRWb3liREJoU0ZacFRETmtkZ3BqYlhSdFlrYzVNMk41T1hsYVYzaHNXVmhPYkV4WFRuTmhVelUxWWxkNFFXTnRWbTFqZVRrd1dWZGtla3d6V1hkTWFrMTFUVlJCTkVKbmIzSkNaMFZGQ2tGWlR5OU5RVVZMUWtOdlRVdEVTVEZhUkZwcVRYcGFhMDFVWjNsTlJFRjVUVmRWTUU1NlNUTk9SR2Q2V2xSRk5VMTZhekZhUkdjelRVZFpNMDFxUm1nS1RtMU5kMGhSV1V0TGQxbENRa0ZIUkhaNlFVSkRkMUZRUkVFeGJtRllVbTlrVjBsMFlVYzVlbVJIVm10TlJHZEhRMmx6UjBGUlVVSm5OemgzUVZGM1JRcExaM2R2WVVoU01HTklUVFpNZVRsdVlWaFNiMlJYU1hWWk1qbDBUREkxTVdKWFJuQmpiVXBvWXpKV2JHTnBPWHBaTW14dFdUSTVhMXBVUVRSQ1oyOXlDa0puUlVWQldVOHZUVUZGVGtKRGIwMUxSRWt4V2tSYWFrMTZXbXROVkdkNVRVUkJlVTFYVlRCT2Vra3pUa1JuZWxwVVJUVk5lbXN4V2tSbk0wMUhXVE1LVFdwR2FFNXRUWGRKUVZsTFMzZFpRa0pCUjBSMmVrRkNSR2RSVTBSQ1FubGFWMXA2VEROU2FGb3pUWFprYWtGMVRYazBlRTFDYjBkRGFYTkhRVkZSUWdwbk56aDNRVkU0UlVSQmQwdE5WRTB3VG1wVk1VMVVWWGxPUkVGMlFtZHZja0puUlVWQldVOHZUVUZGVVVKRFJVMUlNbWd3WkVoQ2VrOXBPSFphTW13d0NtRklWbWxNYlU1MllsTTVkV1JYTVdoaFdFcHBXVmhPYkZwWVNYZEhRVmxMUzNkWlFrSkJSMFIyZWtGQ1JWRlJTMFJCWjNoTmFsa3pUMFJCTWs5RVFuSUtRbWR2Y2tKblJVVkJXVTh2VFVGRlUwSkdNRTFYTW1nd1pFaENlazlwT0haYU1td3dZVWhXYVV4dFRuWmlVemwxWkZjeGFHRllTbWxaV0U1c1dsaEpkZ3BqTWs1d1dtMU9kbHBIVlhaTWJXUndaRWRvTVZscE9UTmlNMHB5V20xNGRtUXpUWFpqYlZaeldsZEdlbHBUTVdwaVIydDFaVmN4YzFGSVNteGFiazEyQ21SSFJtNWplVGt5VFVNMGVreHFSWGRQUVZsTFMzZFpRa0pCUjBSMmVrRkNSWGRSY1VSRFozbE9WMUV5V1hwTk1scEVSVFJOYWtGM1RXcEdiRTVFWTNrS1RucFJORTB5VlhoUFZFMDFUbGRSTkU1NlFtMU9la2w0V1ZSYWFrMUNVVWREYVhOSFFWRlJRbWMzT0hkQlVsRkZRbWQzUldOSVZucGhSRUpqUW1kdmNncENaMFZGUVZsUEwwMUJSVlpDUlRSTlZFZG9NR1JJUW5wUGFUaDJXakpzTUdGSVZtbE1iVTUyWWxNNWRXUlhNV2hoV0VwcFdWaE9iRnBZU1haak1rNXdDbHB0VG5aYVIxVjJXVmRPTUdGWE9YVmplVGw1WkZjMWVreDZUWHBPUkZsNFRsUkpOVTVxUVRKTU1rWXdaRWRXZEdOSVVucE1la1YzUm5kWlMwdDNXVUlLUWtGSFJIWjZRVUpHWjFGS1JFRmtkMk50YkRKWldGSnNUVUpOUjBOcGMwZEJVVkZDWnpjNGQwRlNZMFZDVVhkRVltNUNkRTFGTkVkRGFYTkhRVkZSUWdwbk56aDNRVkpuUlZGQmR5dGpiVlozWW5wd2RXUlhNV2hoV0VwcFdWaE9iRnBZU2tGTlZFa3lUbnBuZDA1cVozWmpNazV3V20xT2RscEhWa0ZOVkUwd0NrNXFWVEZOVkZWNVRrUndiR0p1V25CamJUbDFZbGRXZFdSRWNIVmpSekIzWjFsclIwTnBjMGRCVVZGQ01XNXJRMEpCU1VWbGQxSTFRVWhqUVdSUlJHUUtVRlJDY1hoelkxSk5iVTFhU0doNVdscDZZME52YTNCbGRVNDBPSEptSzBocGJrdEJUSGx1ZFdwblFVRkJZVUpoZFRkWlprRkJRVVZCZDBKSFRVVlJRd3BKUkN0WFZWSTFaak5DV1VkYVVVRnZVekpNYVZJNFdIRnZkbXBJZVc5eVpIVXZSVkE0VWpGc2RHeG5kVUZwUVUxa04yOXplR2RKSzFsaFdWcG5jM2hwQ25nd2JWVkhSSEkwYlRaR04wVnBjM2h3Y0dveFpFMTBTbU5FUVV0Q1oyZHhhR3RxVDFCUlVVUkJkMDV2UVVSQ2JFRnFSVUU1YVV4MlVVbEROM2RxUkVNS1RUVjZVRk16VVdFMVJtUnhjbUZEY0hSUksyOHdaVmhIUW1wdVdFeDFlVlJSYjJkdk9USkNPR0UxUW1KTll5dDFkRXd6YlVGcVFVaFlOV1ZrVldORlVRcFljMlJQUzB4TFVEZHhNMmhMS3pCSVJIUXhTakpvVVZodFlrWXJaR041Y3pWU09UaExOWGt2YWpKU1VWSXpaRlJwV2xaMU1EUlpQUW90TFMwdExVVk9SQ0JEUlZKVVNVWkpRMEZVUlMwdExTMHRDZz09In19fX0="}],"timestampVerificationData":{"rfc3161Timestamps":[{"signedTimestamp":"MIICyTADAgEAMIICwAYJKoZIhvcNAQcCoIICsTCCAq0CAQMxDTALBglghkgBZQMEAgEwgbgGCyqGSIb3DQEJEAEEoIGoBIGlMIGiAgEBBgkrBgEEAYO/MAIwMTANBglghkgBZQMEAgEFAAQg395HrEir3Q3iv8q+QQIcYv8uGkQQrilwfOnQIePzJ4UCFQDhP1i531hQtBSQ9D+g1x9vcTtAlBgPMjAyNjA5MDEwMjEwNDZaMAMCAQGgMqQwMC4xFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEVMBMGA1UEAxMMc2lnc3RvcmUtdHNhoAAxggHaMIIB1gIBATBRMDkxFTATBgNVBAoTDHNpZ3N0b3JlLmRldjEgMB4GA1UEAxMXc2lnc3RvcmUtdHNhLXNlbGZzaWduZWQCFDoTVC8MkGHuvMFDL8uKjosqI4sMMAsGCWCGSAFlAwQCAaCB/DAaBgkqhkiG9w0BCQMxDQYLKoZIhvcNAQkQAQQwHAYJKoZIhvcNAQkFMQ8XDTI2MDkwMTAyMTA0NlowLwYJKoZIhvcNAQkEMSIEIEiO/tyD8mRn/vTD+9KQjWblSrKX6X/gdcwEehFik2hmMIGOBgsqhkiG9w0BCRACLzF/MH0wezB5BCCF+Se8B6tiysO0Q1bBDvyBssaIP9p6uebYcNnROs0FtzBVMD2kOzA5MRUwEwYDVQQKEwxzaWdzdG9yZS5kZXYxIDAeBgNVBAMTF3NpZ3N0b3JlLXRzYS1zZWxmc2lnbmVkAhQ6E1QvDJBh7rzBQy/Lio6LKiOLDDAKBggqhkjOPQQDAgRmMGQCMHJ4B3yF+aMyEaN1ExdPGdWTUmgSvlA3YO944MER8zsklq1ATY4OLJWemyX0X43hVgIwRzksemJjxSZMeQL+15uiaduiHZdhdG/u9xnwZXjT6Qcr7S1CIN3nYDT/OWDKNxOq"}]}},"messageSignature":{"messageDigest":{"algorithm":"SHA2_256","digest":"z470/AStjky53SKvU3b9HBC8rHOD5bPLfH0A8KfCqIo="},"signature":"MEUCIQCDdWQgK8DSmwc/hSD8NNjDn298LEGTWgGDskuUW8xyBQIgI3mYLRi58hNyA8FopAdJ/a7fpp8O5ASf2kqIfvM25dQ="}}
|
|
@@ -0,0 +1,677 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "http://cyclonedx.org/schema/bom-1.6.schema.json",
|
|
3
|
+
"bomFormat": "CycloneDX",
|
|
4
|
+
"specVersion": "1.6",
|
|
5
|
+
"version": 1,
|
|
6
|
+
"metadata": {
|
|
7
|
+
"tools": {
|
|
8
|
+
"components": [
|
|
9
|
+
{
|
|
10
|
+
"type": "application",
|
|
11
|
+
"name": "npm",
|
|
12
|
+
"version": "12.0.2"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"type": "library",
|
|
16
|
+
"name": "cyclonedx-library",
|
|
17
|
+
"group": "@cyclonedx",
|
|
18
|
+
"version": "10.2.0",
|
|
19
|
+
"author": "Jan Kowalleck",
|
|
20
|
+
"description": "Core functionality of CycloneDX for JavaScript (Node.js or WebBrowser).",
|
|
21
|
+
"licenses": [
|
|
22
|
+
{
|
|
23
|
+
"license": {
|
|
24
|
+
"id": "Apache-2.0"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"externalReferences": [
|
|
29
|
+
{
|
|
30
|
+
"url": "https://github.com/CycloneDX/cyclonedx-javascript-library/issues",
|
|
31
|
+
"type": "issue-tracker",
|
|
32
|
+
"comment": "as detected from PackageJson property \"bugs.url\""
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"url": "git+https://github.com/CycloneDX/cyclonedx-javascript-library.git",
|
|
36
|
+
"type": "vcs",
|
|
37
|
+
"comment": "as detected from PackageJson property \"repository.url\""
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"url": "https://github.com/CycloneDX/cyclonedx-javascript-library#readme",
|
|
41
|
+
"type": "website",
|
|
42
|
+
"comment": "as detected from PackageJson property \"homepage\""
|
|
43
|
+
}
|
|
44
|
+
],
|
|
45
|
+
"properties": [
|
|
46
|
+
{
|
|
47
|
+
"name": "cdx:npm:package:constraint:engine:node",
|
|
48
|
+
"value": ">=20.18.0"
|
|
49
|
+
}
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"type": "application",
|
|
54
|
+
"name": "cyclonedx-npm",
|
|
55
|
+
"group": "@cyclonedx",
|
|
56
|
+
"version": "6.0.0",
|
|
57
|
+
"author": "Jan Kowalleck",
|
|
58
|
+
"description": "Create CycloneDX Software Bill of Materials (SBOM) from NPM projects.",
|
|
59
|
+
"licenses": [
|
|
60
|
+
{
|
|
61
|
+
"license": {
|
|
62
|
+
"id": "Apache-2.0"
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
],
|
|
66
|
+
"externalReferences": [
|
|
67
|
+
{
|
|
68
|
+
"url": "https://github.com/CycloneDX/cyclonedx-node-npm/issues",
|
|
69
|
+
"type": "issue-tracker",
|
|
70
|
+
"comment": "as detected from PackageJson property \"bugs.url\""
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"url": "git+https://github.com/CycloneDX/cyclonedx-node-npm.git",
|
|
74
|
+
"type": "vcs",
|
|
75
|
+
"comment": "as detected from PackageJson property \"repository.url\""
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"url": "https://github.com/CycloneDX/cyclonedx-node-npm#readme",
|
|
79
|
+
"type": "website",
|
|
80
|
+
"comment": "as detected from PackageJson property \"homepage\""
|
|
81
|
+
}
|
|
82
|
+
],
|
|
83
|
+
"properties": [
|
|
84
|
+
{
|
|
85
|
+
"name": "cdx:npm:package:constraint:engine:node",
|
|
86
|
+
"value": ">=20.18.0"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"name": "cdx:npm:package:constraint:engine:npm",
|
|
90
|
+
"value": ">=9"
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
},
|
|
96
|
+
"component": {
|
|
97
|
+
"type": "application",
|
|
98
|
+
"name": "scifcode",
|
|
99
|
+
"group": "@numairbaseer",
|
|
100
|
+
"version": "0.3.1",
|
|
101
|
+
"bom-ref": "@numairbaseer/scifcode@0.3.1",
|
|
102
|
+
"description": "Scifcode: a coding CLI agent powered by Poolside Laguna.",
|
|
103
|
+
"licenses": [
|
|
104
|
+
{
|
|
105
|
+
"license": {
|
|
106
|
+
"name": "Proprietary",
|
|
107
|
+
"acknowledgement": "declared"
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
],
|
|
111
|
+
"purl": "pkg:npm/%40numairbaseer/scifcode@0.3.1?vcs_url=git%2Bhttps%3A%2F%2Fgithub.com%2Fnumairbaseer%2Fscifcode.git",
|
|
112
|
+
"externalReferences": [
|
|
113
|
+
{
|
|
114
|
+
"url": "https://github.com/numairbaseer/scifcode/issues",
|
|
115
|
+
"type": "issue-tracker",
|
|
116
|
+
"comment": "as detected from PackageJson property \"bugs.url\""
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"url": "git+https://github.com/numairbaseer/scifcode.git",
|
|
120
|
+
"type": "vcs",
|
|
121
|
+
"comment": "as detected from PackageJson property \"repository.url\""
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"url": "https://github.com/numairbaseer/scifcode#readme",
|
|
125
|
+
"type": "website",
|
|
126
|
+
"comment": "as detected from PackageJson property \"homepage\""
|
|
127
|
+
}
|
|
128
|
+
],
|
|
129
|
+
"properties": [
|
|
130
|
+
{
|
|
131
|
+
"name": "cdx:npm:package:constraint:engine:node",
|
|
132
|
+
"value": ">=22.19.0"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"name": "cdx:npm:package:path",
|
|
136
|
+
"value": ""
|
|
137
|
+
}
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
"properties": [
|
|
141
|
+
{
|
|
142
|
+
"name": "cdx:reproducible",
|
|
143
|
+
"value": "true"
|
|
144
|
+
}
|
|
145
|
+
]
|
|
146
|
+
},
|
|
147
|
+
"components": [
|
|
148
|
+
{
|
|
149
|
+
"type": "library",
|
|
150
|
+
"name": "scifcode-runtime-darwin-arm64",
|
|
151
|
+
"group": "@numairbaseer",
|
|
152
|
+
"version": "0.3.0",
|
|
153
|
+
"bom-ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-darwin-arm64@0.3.0",
|
|
154
|
+
"scope": "optional",
|
|
155
|
+
"licenses": [
|
|
156
|
+
{
|
|
157
|
+
"license": {
|
|
158
|
+
"id": "MIT",
|
|
159
|
+
"acknowledgement": "declared"
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
],
|
|
163
|
+
"purl": "pkg:npm/%40numairbaseer/scifcode-runtime-darwin-arm64@0.3.0",
|
|
164
|
+
"externalReferences": [
|
|
165
|
+
{
|
|
166
|
+
"url": "https://registry.npmjs.org/@numairbaseer/scifcode-runtime-darwin-arm64/-/scifcode-runtime-darwin-arm64-0.3.0.tgz",
|
|
167
|
+
"type": "distribution",
|
|
168
|
+
"hashes": [
|
|
169
|
+
{
|
|
170
|
+
"alg": "SHA-512",
|
|
171
|
+
"content": "cc4b0857e0e62538c0c9ce34560685159db5ec69ca5b9ad25e98c30729ab24569c0aeff2b4df37eaa919a7c3509313fe86b93fde9682c401fc9e08311762c3d5"
|
|
172
|
+
}
|
|
173
|
+
],
|
|
174
|
+
"comment": "as detected from npm-ls property \"resolved\" and property \"integrity\""
|
|
175
|
+
}
|
|
176
|
+
],
|
|
177
|
+
"properties": [
|
|
178
|
+
{
|
|
179
|
+
"name": "cdx:npm:package:path",
|
|
180
|
+
"value": "node_modules/@numairbaseer/scifcode-runtime-darwin-arm64"
|
|
181
|
+
}
|
|
182
|
+
]
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"type": "library",
|
|
186
|
+
"name": "scifcode-runtime-darwin-x64-baseline",
|
|
187
|
+
"group": "@numairbaseer",
|
|
188
|
+
"version": "0.3.0",
|
|
189
|
+
"bom-ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-darwin-x64-baseline@0.3.0",
|
|
190
|
+
"scope": "optional",
|
|
191
|
+
"licenses": [
|
|
192
|
+
{
|
|
193
|
+
"license": {
|
|
194
|
+
"id": "MIT",
|
|
195
|
+
"acknowledgement": "declared"
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
],
|
|
199
|
+
"purl": "pkg:npm/%40numairbaseer/scifcode-runtime-darwin-x64-baseline@0.3.0",
|
|
200
|
+
"externalReferences": [
|
|
201
|
+
{
|
|
202
|
+
"url": "https://registry.npmjs.org/@numairbaseer/scifcode-runtime-darwin-x64-baseline/-/scifcode-runtime-darwin-x64-baseline-0.3.0.tgz",
|
|
203
|
+
"type": "distribution",
|
|
204
|
+
"hashes": [
|
|
205
|
+
{
|
|
206
|
+
"alg": "SHA-512",
|
|
207
|
+
"content": "e55ec7e050f6a4f6a2868ee51140409e66f3a8c0383ad32db95f841771e3f9ca08313529c9d8b764b6ed00f64ea35b9c03a2e7f599a34f4192b0b8c09ebde120"
|
|
208
|
+
}
|
|
209
|
+
],
|
|
210
|
+
"comment": "as detected from npm-ls property \"resolved\" and property \"integrity\""
|
|
211
|
+
}
|
|
212
|
+
],
|
|
213
|
+
"properties": [
|
|
214
|
+
{
|
|
215
|
+
"name": "cdx:npm:package:path",
|
|
216
|
+
"value": "node_modules/@numairbaseer/scifcode-runtime-darwin-x64-baseline"
|
|
217
|
+
}
|
|
218
|
+
]
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"type": "library",
|
|
222
|
+
"name": "scifcode-runtime-darwin-x64",
|
|
223
|
+
"group": "@numairbaseer",
|
|
224
|
+
"version": "0.3.0",
|
|
225
|
+
"bom-ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-darwin-x64@0.3.0",
|
|
226
|
+
"scope": "optional",
|
|
227
|
+
"licenses": [
|
|
228
|
+
{
|
|
229
|
+
"license": {
|
|
230
|
+
"id": "MIT",
|
|
231
|
+
"acknowledgement": "declared"
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
],
|
|
235
|
+
"purl": "pkg:npm/%40numairbaseer/scifcode-runtime-darwin-x64@0.3.0",
|
|
236
|
+
"externalReferences": [
|
|
237
|
+
{
|
|
238
|
+
"url": "https://registry.npmjs.org/@numairbaseer/scifcode-runtime-darwin-x64/-/scifcode-runtime-darwin-x64-0.3.0.tgz",
|
|
239
|
+
"type": "distribution",
|
|
240
|
+
"hashes": [
|
|
241
|
+
{
|
|
242
|
+
"alg": "SHA-512",
|
|
243
|
+
"content": "d7f72ddbd03fb0516b14e96a42a9b8ccb9ac7c20a01184e8e7ec7591bab18e41a7b174375437917ba07a84eb9118801bc75b932dc755d1b2ac436970b7568b71"
|
|
244
|
+
}
|
|
245
|
+
],
|
|
246
|
+
"comment": "as detected from npm-ls property \"resolved\" and property \"integrity\""
|
|
247
|
+
}
|
|
248
|
+
],
|
|
249
|
+
"properties": [
|
|
250
|
+
{
|
|
251
|
+
"name": "cdx:npm:package:path",
|
|
252
|
+
"value": "node_modules/@numairbaseer/scifcode-runtime-darwin-x64"
|
|
253
|
+
}
|
|
254
|
+
]
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"type": "library",
|
|
258
|
+
"name": "scifcode-runtime-linux-arm64-musl",
|
|
259
|
+
"group": "@numairbaseer",
|
|
260
|
+
"version": "0.3.0",
|
|
261
|
+
"bom-ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-linux-arm64-musl@0.3.0",
|
|
262
|
+
"scope": "optional",
|
|
263
|
+
"licenses": [
|
|
264
|
+
{
|
|
265
|
+
"license": {
|
|
266
|
+
"id": "MIT",
|
|
267
|
+
"acknowledgement": "declared"
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
],
|
|
271
|
+
"purl": "pkg:npm/%40numairbaseer/scifcode-runtime-linux-arm64-musl@0.3.0",
|
|
272
|
+
"externalReferences": [
|
|
273
|
+
{
|
|
274
|
+
"url": "https://registry.npmjs.org/@numairbaseer/scifcode-runtime-linux-arm64-musl/-/scifcode-runtime-linux-arm64-musl-0.3.0.tgz",
|
|
275
|
+
"type": "distribution",
|
|
276
|
+
"hashes": [
|
|
277
|
+
{
|
|
278
|
+
"alg": "SHA-512",
|
|
279
|
+
"content": "af627809b8f33bff762606a36669a0c1ce5f093292be497bcd05400d8d81de8ba7eb49c0a13a1ee25063eabf71f3eee70073832e616fd5cef2d7b535aeb28d54"
|
|
280
|
+
}
|
|
281
|
+
],
|
|
282
|
+
"comment": "as detected from npm-ls property \"resolved\" and property \"integrity\""
|
|
283
|
+
}
|
|
284
|
+
],
|
|
285
|
+
"properties": [
|
|
286
|
+
{
|
|
287
|
+
"name": "cdx:npm:package:path",
|
|
288
|
+
"value": "node_modules/@numairbaseer/scifcode-runtime-linux-arm64-musl"
|
|
289
|
+
}
|
|
290
|
+
]
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"type": "library",
|
|
294
|
+
"name": "scifcode-runtime-linux-arm64",
|
|
295
|
+
"group": "@numairbaseer",
|
|
296
|
+
"version": "0.3.0",
|
|
297
|
+
"bom-ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-linux-arm64@0.3.0",
|
|
298
|
+
"scope": "optional",
|
|
299
|
+
"licenses": [
|
|
300
|
+
{
|
|
301
|
+
"license": {
|
|
302
|
+
"id": "MIT",
|
|
303
|
+
"acknowledgement": "declared"
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
],
|
|
307
|
+
"purl": "pkg:npm/%40numairbaseer/scifcode-runtime-linux-arm64@0.3.0",
|
|
308
|
+
"externalReferences": [
|
|
309
|
+
{
|
|
310
|
+
"url": "https://registry.npmjs.org/@numairbaseer/scifcode-runtime-linux-arm64/-/scifcode-runtime-linux-arm64-0.3.0.tgz",
|
|
311
|
+
"type": "distribution",
|
|
312
|
+
"hashes": [
|
|
313
|
+
{
|
|
314
|
+
"alg": "SHA-512",
|
|
315
|
+
"content": "8f89ed9a7f37e3227041f28eb84973eeced9e06d72b596d82aa6fe1ad1726ca85d75056f186cce8c6d43f2f6173ce5e5874ecf42e73c9edf204c465dfbe6cca0"
|
|
316
|
+
}
|
|
317
|
+
],
|
|
318
|
+
"comment": "as detected from npm-ls property \"resolved\" and property \"integrity\""
|
|
319
|
+
}
|
|
320
|
+
],
|
|
321
|
+
"properties": [
|
|
322
|
+
{
|
|
323
|
+
"name": "cdx:npm:package:path",
|
|
324
|
+
"value": "node_modules/@numairbaseer/scifcode-runtime-linux-arm64"
|
|
325
|
+
}
|
|
326
|
+
]
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
"type": "library",
|
|
330
|
+
"name": "scifcode-runtime-linux-x64-baseline-musl",
|
|
331
|
+
"group": "@numairbaseer",
|
|
332
|
+
"version": "0.3.0",
|
|
333
|
+
"bom-ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-linux-x64-baseline-musl@0.3.0",
|
|
334
|
+
"scope": "optional",
|
|
335
|
+
"licenses": [
|
|
336
|
+
{
|
|
337
|
+
"license": {
|
|
338
|
+
"id": "MIT",
|
|
339
|
+
"acknowledgement": "declared"
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
],
|
|
343
|
+
"purl": "pkg:npm/%40numairbaseer/scifcode-runtime-linux-x64-baseline-musl@0.3.0",
|
|
344
|
+
"externalReferences": [
|
|
345
|
+
{
|
|
346
|
+
"url": "https://registry.npmjs.org/@numairbaseer/scifcode-runtime-linux-x64-baseline-musl/-/scifcode-runtime-linux-x64-baseline-musl-0.3.0.tgz",
|
|
347
|
+
"type": "distribution",
|
|
348
|
+
"hashes": [
|
|
349
|
+
{
|
|
350
|
+
"alg": "SHA-512",
|
|
351
|
+
"content": "e72ebb235bb27a5f7831843a4c9dc2074a87cb8272193f191b4a10be932100744441a200df1f43300b2f21a57fe0aa943d155efd78dd5db0e0e76f9793bd9096"
|
|
352
|
+
}
|
|
353
|
+
],
|
|
354
|
+
"comment": "as detected from npm-ls property \"resolved\" and property \"integrity\""
|
|
355
|
+
}
|
|
356
|
+
],
|
|
357
|
+
"properties": [
|
|
358
|
+
{
|
|
359
|
+
"name": "cdx:npm:package:path",
|
|
360
|
+
"value": "node_modules/@numairbaseer/scifcode-runtime-linux-x64-baseline-musl"
|
|
361
|
+
}
|
|
362
|
+
]
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"type": "library",
|
|
366
|
+
"name": "scifcode-runtime-linux-x64-baseline",
|
|
367
|
+
"group": "@numairbaseer",
|
|
368
|
+
"version": "0.3.0",
|
|
369
|
+
"bom-ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-linux-x64-baseline@0.3.0",
|
|
370
|
+
"scope": "optional",
|
|
371
|
+
"licenses": [
|
|
372
|
+
{
|
|
373
|
+
"license": {
|
|
374
|
+
"id": "MIT",
|
|
375
|
+
"acknowledgement": "declared"
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
],
|
|
379
|
+
"purl": "pkg:npm/%40numairbaseer/scifcode-runtime-linux-x64-baseline@0.3.0",
|
|
380
|
+
"externalReferences": [
|
|
381
|
+
{
|
|
382
|
+
"url": "https://registry.npmjs.org/@numairbaseer/scifcode-runtime-linux-x64-baseline/-/scifcode-runtime-linux-x64-baseline-0.3.0.tgz",
|
|
383
|
+
"type": "distribution",
|
|
384
|
+
"hashes": [
|
|
385
|
+
{
|
|
386
|
+
"alg": "SHA-512",
|
|
387
|
+
"content": "630587b514cdb40bc2d985366da7cd111098a36690eb159eafec1855b89cf54c0b78bce43032b3f520485382a5b476554eae3b9acc2bf810865736e9101b40fa"
|
|
388
|
+
}
|
|
389
|
+
],
|
|
390
|
+
"comment": "as detected from npm-ls property \"resolved\" and property \"integrity\""
|
|
391
|
+
}
|
|
392
|
+
],
|
|
393
|
+
"properties": [
|
|
394
|
+
{
|
|
395
|
+
"name": "cdx:npm:package:path",
|
|
396
|
+
"value": "node_modules/@numairbaseer/scifcode-runtime-linux-x64-baseline"
|
|
397
|
+
}
|
|
398
|
+
]
|
|
399
|
+
},
|
|
400
|
+
{
|
|
401
|
+
"type": "library",
|
|
402
|
+
"name": "scifcode-runtime-linux-x64-musl",
|
|
403
|
+
"group": "@numairbaseer",
|
|
404
|
+
"version": "0.3.0",
|
|
405
|
+
"bom-ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-linux-x64-musl@0.3.0",
|
|
406
|
+
"scope": "optional",
|
|
407
|
+
"licenses": [
|
|
408
|
+
{
|
|
409
|
+
"license": {
|
|
410
|
+
"id": "MIT",
|
|
411
|
+
"acknowledgement": "declared"
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
],
|
|
415
|
+
"purl": "pkg:npm/%40numairbaseer/scifcode-runtime-linux-x64-musl@0.3.0",
|
|
416
|
+
"externalReferences": [
|
|
417
|
+
{
|
|
418
|
+
"url": "https://registry.npmjs.org/@numairbaseer/scifcode-runtime-linux-x64-musl/-/scifcode-runtime-linux-x64-musl-0.3.0.tgz",
|
|
419
|
+
"type": "distribution",
|
|
420
|
+
"hashes": [
|
|
421
|
+
{
|
|
422
|
+
"alg": "SHA-512",
|
|
423
|
+
"content": "0c5157cf534e1a2dabe508e0802306a00a264d05da3294e6b577e76976d782f78e447bba1d2a63e8442dfb0e824c020f5be3fcfd27e76848a872712a0de44a5d"
|
|
424
|
+
}
|
|
425
|
+
],
|
|
426
|
+
"comment": "as detected from npm-ls property \"resolved\" and property \"integrity\""
|
|
427
|
+
}
|
|
428
|
+
],
|
|
429
|
+
"properties": [
|
|
430
|
+
{
|
|
431
|
+
"name": "cdx:npm:package:path",
|
|
432
|
+
"value": "node_modules/@numairbaseer/scifcode-runtime-linux-x64-musl"
|
|
433
|
+
}
|
|
434
|
+
]
|
|
435
|
+
},
|
|
436
|
+
{
|
|
437
|
+
"type": "library",
|
|
438
|
+
"name": "scifcode-runtime-linux-x64",
|
|
439
|
+
"group": "@numairbaseer",
|
|
440
|
+
"version": "0.3.0",
|
|
441
|
+
"bom-ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-linux-x64@0.3.0",
|
|
442
|
+
"scope": "optional",
|
|
443
|
+
"licenses": [
|
|
444
|
+
{
|
|
445
|
+
"license": {
|
|
446
|
+
"id": "MIT",
|
|
447
|
+
"acknowledgement": "declared"
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
],
|
|
451
|
+
"purl": "pkg:npm/%40numairbaseer/scifcode-runtime-linux-x64@0.3.0",
|
|
452
|
+
"externalReferences": [
|
|
453
|
+
{
|
|
454
|
+
"url": "https://registry.npmjs.org/@numairbaseer/scifcode-runtime-linux-x64/-/scifcode-runtime-linux-x64-0.3.0.tgz",
|
|
455
|
+
"type": "distribution",
|
|
456
|
+
"hashes": [
|
|
457
|
+
{
|
|
458
|
+
"alg": "SHA-512",
|
|
459
|
+
"content": "9af6c05e64e6466a09405b7225953f25475a26f4adac7919b57311f8acaf5d2ccd610510ef6be8e32f529cf51ac4e684dfb027764a19548940e9b8fa9dd04a15"
|
|
460
|
+
}
|
|
461
|
+
],
|
|
462
|
+
"comment": "as detected from npm-ls property \"resolved\" and property \"integrity\""
|
|
463
|
+
}
|
|
464
|
+
],
|
|
465
|
+
"properties": [
|
|
466
|
+
{
|
|
467
|
+
"name": "cdx:npm:package:path",
|
|
468
|
+
"value": "node_modules/@numairbaseer/scifcode-runtime-linux-x64"
|
|
469
|
+
}
|
|
470
|
+
]
|
|
471
|
+
},
|
|
472
|
+
{
|
|
473
|
+
"type": "library",
|
|
474
|
+
"name": "scifcode-runtime-windows-arm64",
|
|
475
|
+
"group": "@numairbaseer",
|
|
476
|
+
"version": "0.3.0",
|
|
477
|
+
"bom-ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-windows-arm64@0.3.0",
|
|
478
|
+
"scope": "optional",
|
|
479
|
+
"licenses": [
|
|
480
|
+
{
|
|
481
|
+
"license": {
|
|
482
|
+
"id": "MIT",
|
|
483
|
+
"acknowledgement": "declared"
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
],
|
|
487
|
+
"purl": "pkg:npm/%40numairbaseer/scifcode-runtime-windows-arm64@0.3.0",
|
|
488
|
+
"externalReferences": [
|
|
489
|
+
{
|
|
490
|
+
"url": "https://registry.npmjs.org/@numairbaseer/scifcode-runtime-windows-arm64/-/scifcode-runtime-windows-arm64-0.3.0.tgz",
|
|
491
|
+
"type": "distribution",
|
|
492
|
+
"hashes": [
|
|
493
|
+
{
|
|
494
|
+
"alg": "SHA-512",
|
|
495
|
+
"content": "72ccf3a6301c8dbb89db7c3c1b830516774fcc37af907c15e4f7aa0932bf07c3579c33e09775ffd8d431579e79ae0e1d1484485083b605f4a5f1f4e654edb40c"
|
|
496
|
+
}
|
|
497
|
+
],
|
|
498
|
+
"comment": "as detected from npm-ls property \"resolved\" and property \"integrity\""
|
|
499
|
+
}
|
|
500
|
+
],
|
|
501
|
+
"properties": [
|
|
502
|
+
{
|
|
503
|
+
"name": "cdx:npm:package:path",
|
|
504
|
+
"value": "node_modules/@numairbaseer/scifcode-runtime-windows-arm64"
|
|
505
|
+
}
|
|
506
|
+
]
|
|
507
|
+
},
|
|
508
|
+
{
|
|
509
|
+
"type": "library",
|
|
510
|
+
"name": "scifcode-runtime-windows-x64-baseline",
|
|
511
|
+
"group": "@numairbaseer",
|
|
512
|
+
"version": "0.3.0",
|
|
513
|
+
"bom-ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-windows-x64-baseline@0.3.0",
|
|
514
|
+
"scope": "optional",
|
|
515
|
+
"licenses": [
|
|
516
|
+
{
|
|
517
|
+
"license": {
|
|
518
|
+
"id": "MIT",
|
|
519
|
+
"acknowledgement": "declared"
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
],
|
|
523
|
+
"purl": "pkg:npm/%40numairbaseer/scifcode-runtime-windows-x64-baseline@0.3.0",
|
|
524
|
+
"externalReferences": [
|
|
525
|
+
{
|
|
526
|
+
"url": "https://registry.npmjs.org/@numairbaseer/scifcode-runtime-windows-x64-baseline/-/scifcode-runtime-windows-x64-baseline-0.3.0.tgz",
|
|
527
|
+
"type": "distribution",
|
|
528
|
+
"hashes": [
|
|
529
|
+
{
|
|
530
|
+
"alg": "SHA-512",
|
|
531
|
+
"content": "24a9128da5b85709eb94f6ea6c728eb557aefee65221ac13891b68e312c39c0f61abb5d835d95614bd804c6424d11daebe9a13098befa2d57e8857cc452f1bb3"
|
|
532
|
+
}
|
|
533
|
+
],
|
|
534
|
+
"comment": "as detected from npm-ls property \"resolved\" and property \"integrity\""
|
|
535
|
+
}
|
|
536
|
+
],
|
|
537
|
+
"properties": [
|
|
538
|
+
{
|
|
539
|
+
"name": "cdx:npm:package:path",
|
|
540
|
+
"value": "node_modules/@numairbaseer/scifcode-runtime-windows-x64-baseline"
|
|
541
|
+
}
|
|
542
|
+
]
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
"type": "library",
|
|
546
|
+
"name": "scifcode-runtime-windows-x64",
|
|
547
|
+
"group": "@numairbaseer",
|
|
548
|
+
"version": "0.3.0",
|
|
549
|
+
"bom-ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-windows-x64@0.3.0",
|
|
550
|
+
"scope": "optional",
|
|
551
|
+
"licenses": [
|
|
552
|
+
{
|
|
553
|
+
"license": {
|
|
554
|
+
"id": "MIT",
|
|
555
|
+
"acknowledgement": "declared"
|
|
556
|
+
}
|
|
557
|
+
}
|
|
558
|
+
],
|
|
559
|
+
"purl": "pkg:npm/%40numairbaseer/scifcode-runtime-windows-x64@0.3.0",
|
|
560
|
+
"externalReferences": [
|
|
561
|
+
{
|
|
562
|
+
"url": "https://registry.npmjs.org/@numairbaseer/scifcode-runtime-windows-x64/-/scifcode-runtime-windows-x64-0.3.0.tgz",
|
|
563
|
+
"type": "distribution",
|
|
564
|
+
"hashes": [
|
|
565
|
+
{
|
|
566
|
+
"alg": "SHA-512",
|
|
567
|
+
"content": "532aa3e20824a694c764827b93e28103f6b0ea4c795800e78e1f64815b186be367f341616436ad24b576d7550f7b1d71d379476f0d8c9da78febb8acd4ba97a5"
|
|
568
|
+
}
|
|
569
|
+
],
|
|
570
|
+
"comment": "as detected from npm-ls property \"resolved\" and property \"integrity\""
|
|
571
|
+
}
|
|
572
|
+
],
|
|
573
|
+
"properties": [
|
|
574
|
+
{
|
|
575
|
+
"name": "cdx:npm:package:path",
|
|
576
|
+
"value": "node_modules/@numairbaseer/scifcode-runtime-windows-x64"
|
|
577
|
+
}
|
|
578
|
+
]
|
|
579
|
+
},
|
|
580
|
+
{
|
|
581
|
+
"type": "library",
|
|
582
|
+
"name": "scifcode-runtime",
|
|
583
|
+
"group": "@numairbaseer",
|
|
584
|
+
"version": "0.3.0",
|
|
585
|
+
"bom-ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime@0.3.0",
|
|
586
|
+
"licenses": [
|
|
587
|
+
{
|
|
588
|
+
"license": {
|
|
589
|
+
"id": "MIT",
|
|
590
|
+
"acknowledgement": "declared"
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
],
|
|
594
|
+
"purl": "pkg:npm/%40numairbaseer/scifcode-runtime@0.3.0",
|
|
595
|
+
"externalReferences": [
|
|
596
|
+
{
|
|
597
|
+
"url": "https://registry.npmjs.org/@numairbaseer/scifcode-runtime/-/scifcode-runtime-0.3.0.tgz",
|
|
598
|
+
"type": "distribution",
|
|
599
|
+
"hashes": [
|
|
600
|
+
{
|
|
601
|
+
"alg": "SHA-512",
|
|
602
|
+
"content": "808cf270df03cd8cca0b0755ef12680f2e31ee56e4621bbdef0ad600973783c81f25fdd59c4223dac99c7c59e481b2a5116304cbd166496b3108eefc52425571"
|
|
603
|
+
}
|
|
604
|
+
],
|
|
605
|
+
"comment": "as detected from npm-ls property \"resolved\" and property \"integrity\""
|
|
606
|
+
}
|
|
607
|
+
],
|
|
608
|
+
"properties": [
|
|
609
|
+
{
|
|
610
|
+
"name": "cdx:npm:package:path",
|
|
611
|
+
"value": "node_modules/@numairbaseer/scifcode-runtime"
|
|
612
|
+
}
|
|
613
|
+
]
|
|
614
|
+
}
|
|
615
|
+
],
|
|
616
|
+
"dependencies": [
|
|
617
|
+
{
|
|
618
|
+
"ref": "@numairbaseer/scifcode@0.3.1",
|
|
619
|
+
"dependsOn": [
|
|
620
|
+
"@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime@0.3.0"
|
|
621
|
+
]
|
|
622
|
+
},
|
|
623
|
+
{
|
|
624
|
+
"ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-darwin-arm64@0.3.0"
|
|
625
|
+
},
|
|
626
|
+
{
|
|
627
|
+
"ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-darwin-x64-baseline@0.3.0"
|
|
628
|
+
},
|
|
629
|
+
{
|
|
630
|
+
"ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-darwin-x64@0.3.0"
|
|
631
|
+
},
|
|
632
|
+
{
|
|
633
|
+
"ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-linux-arm64-musl@0.3.0"
|
|
634
|
+
},
|
|
635
|
+
{
|
|
636
|
+
"ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-linux-arm64@0.3.0"
|
|
637
|
+
},
|
|
638
|
+
{
|
|
639
|
+
"ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-linux-x64-baseline-musl@0.3.0"
|
|
640
|
+
},
|
|
641
|
+
{
|
|
642
|
+
"ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-linux-x64-baseline@0.3.0"
|
|
643
|
+
},
|
|
644
|
+
{
|
|
645
|
+
"ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-linux-x64-musl@0.3.0"
|
|
646
|
+
},
|
|
647
|
+
{
|
|
648
|
+
"ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-linux-x64@0.3.0"
|
|
649
|
+
},
|
|
650
|
+
{
|
|
651
|
+
"ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-windows-arm64@0.3.0"
|
|
652
|
+
},
|
|
653
|
+
{
|
|
654
|
+
"ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-windows-x64-baseline@0.3.0"
|
|
655
|
+
},
|
|
656
|
+
{
|
|
657
|
+
"ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-windows-x64@0.3.0"
|
|
658
|
+
},
|
|
659
|
+
{
|
|
660
|
+
"ref": "@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime@0.3.0",
|
|
661
|
+
"dependsOn": [
|
|
662
|
+
"@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-darwin-arm64@0.3.0",
|
|
663
|
+
"@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-darwin-x64-baseline@0.3.0",
|
|
664
|
+
"@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-darwin-x64@0.3.0",
|
|
665
|
+
"@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-linux-arm64-musl@0.3.0",
|
|
666
|
+
"@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-linux-arm64@0.3.0",
|
|
667
|
+
"@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-linux-x64-baseline-musl@0.3.0",
|
|
668
|
+
"@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-linux-x64-baseline@0.3.0",
|
|
669
|
+
"@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-linux-x64-musl@0.3.0",
|
|
670
|
+
"@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-linux-x64@0.3.0",
|
|
671
|
+
"@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-windows-arm64@0.3.0",
|
|
672
|
+
"@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-windows-x64-baseline@0.3.0",
|
|
673
|
+
"@numairbaseer/scifcode@0.3.1|@numairbaseer/scifcode-runtime-windows-x64@0.3.0"
|
|
674
|
+
]
|
|
675
|
+
}
|
|
676
|
+
]
|
|
677
|
+
}
|
package/src/cli.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import path from "node:path";
|
|
3
|
-
import { fileURLToPath } from "node:url";
|
|
4
1
|
import { ensureScifcodeConfig } from "./ensure-scifcode-config.js";
|
|
5
2
|
import { loadScifcodeEnv } from "./env-config.js";
|
|
6
3
|
import { runRuntime } from "./run-runtime.js";
|
|
7
4
|
import { login, logout, whoami } from "./control-plane-auth.js";
|
|
5
|
+
import packageJson from "../package.json" with { type: "json" };
|
|
8
6
|
|
|
9
7
|
export function printHelp(stdout = console.log) {
|
|
10
8
|
stdout(`Scifcode - coding CLI agent powered by Poolside Laguna
|
|
@@ -30,11 +28,7 @@ Private config files:
|
|
|
30
28
|
}
|
|
31
29
|
|
|
32
30
|
export function getPackageVersion() {
|
|
33
|
-
|
|
34
|
-
const srcDir = path.dirname(currentFile);
|
|
35
|
-
const packagePath = path.join(srcDir, "..", "package.json");
|
|
36
|
-
const pkg = JSON.parse(fs.readFileSync(packagePath, "utf8"));
|
|
37
|
-
return pkg.version;
|
|
31
|
+
return packageJson.version;
|
|
38
32
|
}
|
|
39
33
|
|
|
40
34
|
function createConsoleWriters(stdout, stderr) {
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { spawnSync } from "node:child_process";
|
|
6
|
+
|
|
7
|
+
function runGit(args, options = {}) {
|
|
8
|
+
const result = (options.spawnSyncFn || spawnSync)("git", args, {
|
|
9
|
+
cwd: options.cwd,
|
|
10
|
+
env: options.env,
|
|
11
|
+
encoding: "utf8",
|
|
12
|
+
stdio: ["ignore", "pipe", "pipe"]
|
|
13
|
+
});
|
|
14
|
+
if (result.error) throw result.error;
|
|
15
|
+
if (result.status !== 0) {
|
|
16
|
+
throw new Error(String(result.stderr || "Git command failed.").trim());
|
|
17
|
+
}
|
|
18
|
+
return String(result.stdout || "").trim();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function snapshotWorkingTree(repoDir, options = {}) {
|
|
22
|
+
const temporaryDir = fs.mkdtempSync(path.join(options.tmpDir || os.tmpdir(), "scifcode-git-index-"));
|
|
23
|
+
const indexPath = path.join(temporaryDir, "index");
|
|
24
|
+
const env = { ...(options.env || process.env), GIT_INDEX_FILE: indexPath };
|
|
25
|
+
try {
|
|
26
|
+
try {
|
|
27
|
+
runGit(["read-tree", "HEAD"], { ...options, cwd: repoDir, env });
|
|
28
|
+
} catch {
|
|
29
|
+
runGit(["read-tree", "--empty"], { ...options, cwd: repoDir, env });
|
|
30
|
+
}
|
|
31
|
+
runGit(["add", "-A"], { ...options, cwd: repoDir, env });
|
|
32
|
+
return runGit(["write-tree"], { ...options, cwd: repoDir, env });
|
|
33
|
+
} finally {
|
|
34
|
+
fs.rmSync(temporaryDir, { recursive: true, force: true });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function countChangedLines(numstat) {
|
|
39
|
+
return numstat.split("\n").reduce((total, line) => {
|
|
40
|
+
if (!line) return total;
|
|
41
|
+
const [added, deleted] = line.split("\t");
|
|
42
|
+
const additions = Number.parseInt(added, 10);
|
|
43
|
+
const deletions = Number.parseInt(deleted, 10);
|
|
44
|
+
return total
|
|
45
|
+
+ (Number.isNaN(additions) ? 0 : additions)
|
|
46
|
+
+ (Number.isNaN(deletions) ? 0 : deletions);
|
|
47
|
+
}, 0);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export function createCodeUsageReporter(options = {}) {
|
|
51
|
+
const cwd = options.cwd || process.cwd();
|
|
52
|
+
let repoDir;
|
|
53
|
+
let startingTree;
|
|
54
|
+
try {
|
|
55
|
+
repoDir = runGit(["rev-parse", "--show-toplevel"], { ...options, cwd });
|
|
56
|
+
startingTree = snapshotWorkingTree(repoDir, options);
|
|
57
|
+
} catch {
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const eventId = (options.randomUUIDFn || crypto.randomUUID)();
|
|
62
|
+
return {
|
|
63
|
+
eventId,
|
|
64
|
+
async report() {
|
|
65
|
+
const endingTree = snapshotWorkingTree(repoDir, options);
|
|
66
|
+
const numstat = runGit(["diff", "--no-ext-diff", "--numstat", startingTree, endingTree], {
|
|
67
|
+
...options,
|
|
68
|
+
cwd: repoDir,
|
|
69
|
+
env: options.env || process.env
|
|
70
|
+
});
|
|
71
|
+
const linesChanged = countChangedLines(numstat);
|
|
72
|
+
const response = await (options.fetchFn || fetch)(`${options.controlPlaneUrl}/usage/code`, {
|
|
73
|
+
method: "POST",
|
|
74
|
+
headers: {
|
|
75
|
+
authorization: `Bearer ${options.sessionToken}`,
|
|
76
|
+
"content-type": "application/json"
|
|
77
|
+
},
|
|
78
|
+
body: JSON.stringify({ eventId, linesChanged })
|
|
79
|
+
});
|
|
80
|
+
if (!response.ok) {
|
|
81
|
+
throw new Error(`Control-plane request failed: HTTP ${response.status}`);
|
|
82
|
+
}
|
|
83
|
+
return { eventId, linesChanged };
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
}
|
package/src/constants.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export const DEFAULT_PROVIDER_NAME = "scifcode";
|
|
2
2
|
export const DEFAULT_CONTROL_PLANE_URL = "http://localhost:8080";
|
|
3
|
-
export const DEFAULT_MODEL = "
|
|
4
|
-
export const DEFAULT_MODEL_NAME = "
|
|
3
|
+
export const DEFAULT_MODEL = "scifcoder-1.0";
|
|
4
|
+
export const DEFAULT_MODEL_NAME = "scifcoder-1.0";
|
|
5
5
|
export const DEFAULT_CONTEXT_WINDOW = 32768;
|
|
6
6
|
export const DEFAULT_MAX_TOKENS = 8192;
|
|
7
7
|
export const SESSION_TOKEN_ENV_NAME = "SCIFCODE_SESSION_TOKEN";
|
package/src/run-runtime.js
CHANGED
|
@@ -3,8 +3,9 @@ import os from "node:os";
|
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { spawn } from "node:child_process";
|
|
5
5
|
import { fileURLToPath } from "node:url";
|
|
6
|
-
import { DEFAULT_MODEL, DEFAULT_PROVIDER_NAME, SESSION_TOKEN_ENV_NAME } from "./constants.js";
|
|
6
|
+
import { DEFAULT_MODEL, DEFAULT_PROVIDER_NAME, SESSION_TOKEN_ENV_NAME, getControlPlaneUrl } from "./constants.js";
|
|
7
7
|
import { readSession } from "./control-plane-auth.js";
|
|
8
|
+
import { createCodeUsageReporter } from "./code-usage.js";
|
|
8
9
|
|
|
9
10
|
function executableOnPath(name, env = process.env) {
|
|
10
11
|
return String(env.PATH || "").split(path.delimiter).map(dir => path.join(dir, name)).find(fs.existsSync);
|
|
@@ -25,12 +26,21 @@ function findInstalledRuntime(options = {}) {
|
|
|
25
26
|
}
|
|
26
27
|
}
|
|
27
28
|
|
|
29
|
+
function findBundledRuntime(options = {}) {
|
|
30
|
+
const runtimePlatform = options.platform || process.platform;
|
|
31
|
+
const binaryName = runtimePlatform === "win32" ? "scifcode-runtime.exe" : "scifcode-runtime";
|
|
32
|
+
const candidate = path.join(path.dirname(options.execPath || process.execPath), binaryName);
|
|
33
|
+
return fs.existsSync(candidate) ? candidate : undefined;
|
|
34
|
+
}
|
|
35
|
+
|
|
28
36
|
export function resolveRuntime(options = {}) {
|
|
29
37
|
const env = options.env || process.env;
|
|
30
38
|
if (env.SCIFCODE_RUNTIME_BIN) {
|
|
31
39
|
if (!fs.existsSync(env.SCIFCODE_RUNTIME_BIN)) throw new Error(`SCIFCODE_RUNTIME_BIN does not exist: ${env.SCIFCODE_RUNTIME_BIN}`);
|
|
32
40
|
return { command: env.SCIFCODE_RUNTIME_BIN, argsPrefix: [], source: "binary" };
|
|
33
41
|
}
|
|
42
|
+
const bundledBin = findBundledRuntime(options);
|
|
43
|
+
if (bundledBin) return { command: bundledBin, argsPrefix: [], source: "binary" };
|
|
34
44
|
const installedBin = findInstalledRuntime(options);
|
|
35
45
|
if (installedBin) return { command: installedBin, argsPrefix: [], source: "package" };
|
|
36
46
|
const sourceDir = env.SCIFCODE_SOURCE_DIR || defaultSourceDir();
|
|
@@ -86,6 +96,7 @@ export function buildRuntimeEnv(env = process.env, options = {}) {
|
|
|
86
96
|
const runtimeEnv = { ...env };
|
|
87
97
|
if (!runtimeEnv[SESSION_TOKEN_ENV_NAME]) {
|
|
88
98
|
const session = (options.readSessionFn || readSession)({ homeDir: options.homeDir });
|
|
99
|
+
options.onSession?.(session);
|
|
89
100
|
const expiresAt = session?.expiresAt ? Date.parse(session.expiresAt) : Number.POSITIVE_INFINITY;
|
|
90
101
|
if (session?.sessionToken && expiresAt > Date.now()) {
|
|
91
102
|
runtimeEnv[SESSION_TOKEN_ENV_NAME] = session.sessionToken;
|
|
@@ -105,18 +116,38 @@ export function runRuntime(userArgs = [], options = {}) {
|
|
|
105
116
|
const env = options.env || process.env;
|
|
106
117
|
const stderr = options.stderr || console.error;
|
|
107
118
|
const exit = options.exit || process.exit;
|
|
108
|
-
|
|
119
|
+
let storedSession;
|
|
120
|
+
const runtimeEnv = buildRuntimeEnv(env, {
|
|
121
|
+
...options,
|
|
122
|
+
onSession: session => { storedSession = session; }
|
|
123
|
+
});
|
|
109
124
|
if (!validateSession(runtimeEnv)) { printMissingSession(stderr); exit(1); return null; }
|
|
110
125
|
let runtime;
|
|
111
126
|
try { runtime = (options.resolveRuntimeFn || resolveRuntime)({ env }); }
|
|
112
127
|
catch (error) { stderr("Failed to resolve the Scifcode agent runtime."); stderr(error.message); exit(1); return null; }
|
|
113
128
|
const projectDir = options.cwd || process.cwd();
|
|
129
|
+
let codeUsageReporter;
|
|
130
|
+
try {
|
|
131
|
+
codeUsageReporter = (options.createCodeUsageReporterFn || createCodeUsageReporter)({
|
|
132
|
+
cwd: projectDir,
|
|
133
|
+
env: runtimeEnv,
|
|
134
|
+
sessionToken: runtimeEnv[SESSION_TOKEN_ENV_NAME],
|
|
135
|
+
controlPlaneUrl: storedSession?.controlPlaneUrl || getControlPlaneUrl(env),
|
|
136
|
+
fetchFn: options.fetchFn
|
|
137
|
+
});
|
|
138
|
+
} catch (error) {
|
|
139
|
+
stderr(`Could not start Git diff tracking: ${error.message}`);
|
|
140
|
+
}
|
|
114
141
|
const child = (options.spawnFn || spawn)(runtime.command, buildRuntimeArgs(userArgs, runtimeEnv, runtime, projectDir), {
|
|
115
142
|
stdio: "inherit",
|
|
116
143
|
env: runtimeEnv,
|
|
117
144
|
cwd: runtime.cwd || projectDir
|
|
118
145
|
});
|
|
119
|
-
child.on("exit", code =>
|
|
146
|
+
child.on("exit", code => {
|
|
147
|
+
Promise.resolve(codeUsageReporter?.report())
|
|
148
|
+
.catch(error => stderr(`Could not report code usage: ${error.message}`))
|
|
149
|
+
.finally(() => exit(code ?? 0));
|
|
150
|
+
});
|
|
120
151
|
child.on("error", error => { stderr("Failed to launch Scifcode."); stderr(error.message); exit(1); });
|
|
121
152
|
return child;
|
|
122
153
|
}
|