knosky 0.6.3 → 0.7.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/CHANGELOG.md +149 -93
- package/CREDITS.md +14 -14
- package/LICENSE.md +76 -76
- package/LIMITATIONS.md +33 -23
- package/PRIVACY.md +30 -30
- package/README.md +170 -117
- package/SECURITY.md +78 -46
- package/action/post-comment.mjs +94 -89
- package/action.yml +62 -62
- package/bin/knosky.mjs +279 -105
- package/core/CONTRACT.md +70 -70
- package/core/append-only-checkpoint.mjs +215 -0
- package/core/audit-writer.mjs +317 -0
- package/core/benchmark-results.mjs +225 -225
- package/core/bundle.mjs +178 -178
- package/core/churn.mjs +23 -23
- package/core/ci.mjs +268 -268
- package/core/comparison.mjs +189 -189
- package/core/config.mjs +189 -189
- package/core/constants.mjs +13 -13
- package/core/contract.mjs +123 -123
- package/core/cross-repo.mjs +111 -111
- package/core/decision-codes.mjs +92 -0
- package/core/destination.mjs +161 -161
- package/core/district-classification.mjs +111 -0
- package/core/doctor-scorecard.mjs +369 -0
- package/core/domain-store.mjs +347 -0
- package/core/edges.mjs +43 -43
- package/core/escalate.mjs +68 -68
- package/core/freshness.mjs +198 -194
- package/core/fs-indexer.mjs +218 -218
- package/core/key-store.mjs +348 -348
- package/core/layout.mjs +46 -46
- package/core/ledger.mjs +176 -141
- package/core/local-ipc-identity.mjs +500 -0
- package/core/lod.mjs +155 -155
- package/core/mode-b.mjs +410 -0
- package/core/multi-model-benchmark.mjs +405 -405
- package/core/net-lockdown.mjs +421 -0
- package/core/onboarding.mjs +223 -223
- package/core/operator-auth.mjs +317 -0
- package/core/overlays.mjs +45 -45
- package/core/policy-lattice.mjs +142 -0
- package/core/pr-comment.mjs +198 -198
- package/core/protocol-spec.mjs +460 -460
- package/core/provenance.mjs +320 -0
- package/core/retrieve.mjs +63 -63
- package/core/route.mjs +304 -304
- package/core/schema.mjs +275 -275
- package/core/signing-tiers.mjs +1265 -0
- package/core/swarm-bench.mjs +106 -0
- package/core/swarm-coordinator.mjs +867 -0
- package/core/trust-root-rekey.mjs +410 -0
- package/mcp/server.mjs +264 -108
- package/package.json +56 -46
- package/renderer/art/kenney/buildingTiles_sheet.xml +130 -130
- package/renderer/art/kenney/cityDetails_sheet.xml +12 -12
- package/renderer/art/kenney/landscapeTiles_sheet.xml +129 -129
- package/renderer/art/kenney/sheet_allCars.xml +545 -545
- package/renderer/build-rich.mjs +43 -43
- package/renderer/city.template.html +808 -808
- package/ssot/decision-codes.json +133 -0
- package/ssot/ladder-l0-l3.md +232 -0
- package/ssot/tool-menu.json +130 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,93 +1,149 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to KnoSky. Versions are git-tagged on this repo.
|
|
4
|
-
|
|
5
|
-
## [
|
|
6
|
-
|
|
7
|
-
###
|
|
8
|
-
- **
|
|
9
|
-
|
|
10
|
-
-
|
|
11
|
-
|
|
12
|
-
- **
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
###
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
###
|
|
43
|
-
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
- **
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
-
|
|
78
|
-
|
|
79
|
-
###
|
|
80
|
-
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
###
|
|
85
|
-
-
|
|
86
|
-
- **
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
-
|
|
92
|
-
|
|
93
|
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to KnoSky. Versions are git-tagged on this repo.
|
|
4
|
+
|
|
5
|
+
## [Unreleased] — F0.5 OS-level network lockdown for the evaluator process
|
|
6
|
+
|
|
7
|
+
### Security
|
|
8
|
+
- **F0.5 network lockdown (SAT-549):** the evaluator process can now be placed in an OS-level
|
|
9
|
+
network sandbox that structurally denies non-loopback network syscalls at the kernel level —
|
|
10
|
+
defense-in-depth beyond the existing static no-egress import lint (F1 Fix 7, which stays as a
|
|
11
|
+
cheap first-line check).
|
|
12
|
+
- **Linux:** unprivileged user+network namespace via `unshare --user --net`. The kernel-level
|
|
13
|
+
routing table inside the namespace has no external routes; all TCP/UDP attempts to non-loopback
|
|
14
|
+
addresses return ENETUNREACH immediately. Unix-domain sockets (used by F0.4/SO_PEERCRED IPC)
|
|
15
|
+
are unaffected.
|
|
16
|
+
- **macOS:** `sandbox-exec(1)` with a minimal SBPL profile that denies outbound network and
|
|
17
|
+
permits loopback and Unix sockets. Full App Sandbox requires packaging-time entitlements;
|
|
18
|
+
`knosky doctor` reports availability.
|
|
19
|
+
- **Windows:** WFP/AppContainer is a packaging-time concern; `knosky doctor` detects whether
|
|
20
|
+
the current process is running inside an AppContainer and reports plainly if not.
|
|
21
|
+
- **F0.4-survives-sandbox conformance:** SO_PEERCRED (Unix-domain socket IPC) is verified to
|
|
22
|
+
work correctly inside the Linux net namespace — no carve-out needed, no general sandbox
|
|
23
|
+
loosening required.
|
|
24
|
+
- **`knosky doctor` subcommand:** new `knosky doctor` command surfaces the F0.5 sandbox status
|
|
25
|
+
(active / available-but-not-running / unsupported-with-reason) so operators can confirm the
|
|
26
|
+
lockdown is in effect rather than silently proceeding without it.
|
|
27
|
+
|
|
28
|
+
### Notes
|
|
29
|
+
- `core/net-lockdown.mjs` exports `probeNetworkLockdownSupport()`, `wrapArgsForLockdown()`, and
|
|
30
|
+
`doctorLines()` — pure stdlib, no new dependencies.
|
|
31
|
+
- The static no-egress import lint (F1 Fix 7) is unchanged; F0.5 is an additional OS-level layer,
|
|
32
|
+
not a replacement.
|
|
33
|
+
|
|
34
|
+
## [0.6.3] - 2026-07-04 -- Zoomed-out view redesigned as a clean city silhouette
|
|
35
|
+
|
|
36
|
+
### Changed
|
|
37
|
+
- **Default zoomed-out view:** replaced the per-district badge overview added in 0.6.1/0.6.2 with a single flat-green city silhouette -- closer to viewing a map/globe from far out than a dashboard of counters. District and building detail now appears once you zoom in or select a district, which is also when the underlying ground/building geometry renders.
|
|
38
|
+
|
|
39
|
+
### Fixed
|
|
40
|
+
- **Missing island surface:** the isometric island's top face was never filled at any zoom level -- only its two side walls and an edge outline were drawn. This is also the root cause of earlier reports that the zoomed-out view showed "just an outline."
|
|
41
|
+
|
|
42
|
+
### Notes
|
|
43
|
+
- No change to indexing, protocol, or trust-root behavior.
|
|
44
|
+
|
|
45
|
+
## [0.6.2] - 2026-07-03 -- District badges and building markers were rendering at sub-pixel size
|
|
46
|
+
|
|
47
|
+
### Fixed
|
|
48
|
+
- **Invisible zoomed-out markers:** district badges (added in 0.6.1) and individual building dots at the next zoom level in were both sized in world units that get scaled down by the camera's own zoom factor. At the very low zoom values those two tiers are designed for, this shrank every badge and dot to about a pixel or less -- present in the data, invisible on screen. Both were made a constant, readable size on screen regardless of zoom (superseded by the 0.6.3 redesign above for the district-badge tier).
|
|
49
|
+
|
|
50
|
+
### Notes
|
|
51
|
+
- No change to indexing, protocol, or trust-root behavior.
|
|
52
|
+
|
|
53
|
+
## [0.6.1] - 2026-07-03 -- District overview badges were never rendering
|
|
54
|
+
|
|
55
|
+
### Fixed
|
|
56
|
+
- **Zoomed-out district badges:** the renderer computed a per-district "cluster badge" overview for the fully-zoomed-out view, but the function that populates it was never actually called, so zooming all the way out showed nothing but the map's outline. Badges populated correctly after this fix (superseded by the 0.6.3 redesign above).
|
|
57
|
+
|
|
58
|
+
### Notes
|
|
59
|
+
- No change to indexing, protocol, or trust-root behavior.
|
|
60
|
+
|
|
61
|
+
## [0.6.0] - 2026-07-02 -- Trust-root hardening, rendering at scale, adversarial red-team suite
|
|
62
|
+
|
|
63
|
+
### Added
|
|
64
|
+
- **Rendering engine at scale:** level-of-detail rendering, clustering, virtualization, and streaming for large single-repo graphs; a cross-repo graph concept and rendering for multi-repo sets.
|
|
65
|
+
- **Adversarial red-team suite:** a full pass across four categories -- indexer/artifact safety, local trust root, rendering engine, protocol/schema -- now wired into CI as a required check on every PR, and into the release workflow as a hard gate before any `npm publish`. Findings, fixes, and accepted limitations are published in [RED-TEAM.md](RED-TEAM.md).
|
|
66
|
+
- **Conditional publish gate:** the release workflow now runs the complete test suite (including the full red-team suite) before publishing; any failure blocks the release rather than proceeding silently.
|
|
67
|
+
- **Real-world validation:** indexing and rendering validated at scale against a large real monorepo and a real 4-repo linked set with genuine cross-repo dependencies, plus an adversarial case with deliberately stale/conflicting policy data.
|
|
68
|
+
- **Measurement infrastructure (advisory, offline, no telemetry):** a naive-vs-KnoSky-guided agent comparison protocol, and a harness to run the same benchmark simultaneously across multiple model families for independent comparison.
|
|
69
|
+
- **Protocol Adoption Kit:** a start-here doc, a machine-readable protocol spec with schemas, a model-agnostic onboarding contract, and GitHub Action packaging reusing the PR-GPS pattern.
|
|
70
|
+
- Comparison page and additional launch documentation under `wiki/`.
|
|
71
|
+
|
|
72
|
+
### Security
|
|
73
|
+
- **Trust-root hardening (Hardening Addendum 2):** full key rotation/revocation lifecycle. Two quorum-math edge cases are identified, fixed where fixable, and explicitly documented rather than hidden: the N=2 degenerate case (mathematically unavoidable at N=2 -- maintain N>=3 for real threshold protection) and the M=0 sole-remaining-key self-revocation case (an intentional design choice -- see SECURITY.md). The ledger high-water-mark guard is now correctly consumed by the freshness-attestation check it was built to protect.
|
|
74
|
+
- **CI hardening:** a new AI-assisted security review runs on every pull request alongside the existing gitleaks secret scan.
|
|
75
|
+
|
|
76
|
+
### Changed
|
|
77
|
+
- Public wording on the local trust model's TUF-evolution is now locked to the reviewed sentence across docs/README/site copy.
|
|
78
|
+
|
|
79
|
+
### Notes
|
|
80
|
+
- Everything above remains **local-first, no telemetry, no hosted backend** -- nothing in this release changes that.
|
|
81
|
+
|
|
82
|
+
## [0.5.0] - 2026-07-01 -- Route engine + PR-GPS (Protocol v1)
|
|
83
|
+
|
|
84
|
+
### Added
|
|
85
|
+
- **`.knosky` protocol foundation:** versioned config (`.knosky/config.yml`), `route.json` and `intent-manifest` schemas (`knosky_protocol: "1.0"`).
|
|
86
|
+
- **Route engine (`kc_route`):** point at a destination -- a file, a folder, an import chain, a "district" (category) -- and get a ranked, advisory route through the repo with waypoints, alternates, confidence, and caveats. Structural only: file/folder/imports/dependency-chain, never semantic/code-meaning.
|
|
87
|
+
- **`kc_bundle`:** builds a shareable intent-manifest (paths + sha256 + edges) with a fail-closed secret scan, for agents that need to share a scoped, verifiable file set.
|
|
88
|
+
- **PR-GPS:** `knosky ci` generates an advisory navigation report for a pull request's changed files. A new GitHub Action posts/updates it as a single PR comment automatically -- advisory only, never blocks or gates a build.
|
|
89
|
+
|
|
90
|
+
### Security
|
|
91
|
+
- Independent adversarial pass ahead of this release: fixed a symlink-escape read and an unreadable-file fail-open in the bundle engine, a git-ref option-injection in the CI report generator, plus two additional issues found during the pass. See the repo's PR history for detail.
|
|
92
|
+
|
|
93
|
+
### Notes
|
|
94
|
+
- Everything above is **advisory-only, metadata-only, local, no telemetry** -- KnoSky reads structure, never uploads your code, and nothing here blocks or gates a build.
|
|
95
|
+
|
|
96
|
+
## [0.4.1] - 2026-06-29 — Security review fixes
|
|
97
|
+
|
|
98
|
+
### Security
|
|
99
|
+
- **The fail-closed secret scan now actually fails closed.** It previously ran *after* scrubbing, so a secret in a title/heading/summary was silently redacted instead of blocking the build. It now scans the **un-scrubbed** projections before serialization and blocks (the post-scrub residual is kept as a defense-in-depth gap detector). A secret in a heading now stops the build.
|
|
100
|
+
- **Embedded mode is fail-closed.** The postMessage bridge now requires a non-empty `window.__KC_ALLOWED_ORIGINS` allowlist (the bridge is disabled if it is empty), only accepts messages from the embedding parent frame, and never broadcasts readiness to `"*"`.
|
|
101
|
+
|
|
102
|
+
### Added
|
|
103
|
+
- `test/security-fixtures.mjs` — pure-Node regression tests (secret block, ignore rules, XSS escaping, embed fail-closed). Run `node test/security-fixtures.mjs`.
|
|
104
|
+
- `.github/workflows/ci.yml` — runs the fixtures + `npm audit` on every PR.
|
|
105
|
+
- Root `package-lock.json` for reproducible `npx` / `npm ci` installs.
|
|
106
|
+
|
|
107
|
+
### Changed
|
|
108
|
+
- README: removed a "zero data risk" line that contradicted PRIVACY.md.
|
|
109
|
+
|
|
110
|
+
## [0.4.0] - 2026-06-29 — File Connections + churn (code-intel)
|
|
111
|
+
|
|
112
|
+
### Added
|
|
113
|
+
- **File Connections:** import/dependency edges drawn as roads between buildings — select a file to see what it imports and what imports it. Per-language import scan over a bounded prefix; specifiers are resolved to repo files and then discarded (file-to-file edges only).
|
|
114
|
+
- **Churn heat:** recently-changed files glow on the map, from `git log` (per-file commit count only).
|
|
115
|
+
- **MCP `kc_related`:** ask your assistant "what connects to this file?" — out-edges, in-edges, and churn, with citations.
|
|
116
|
+
- Flags: `--no-graph`, `--no-churn` to omit either signal.
|
|
117
|
+
|
|
118
|
+
### Notes
|
|
119
|
+
- Strictly **file-level metadata** (decision D-155): no symbol names, no ASTs, no code bodies, no commit messages/diffs. KnoSky maps how files connect; it does not analyze your code.
|
|
120
|
+
|
|
121
|
+
## [0.3.0] - 2026-06-29 — One-command launcher (npx)
|
|
122
|
+
|
|
123
|
+
### Added
|
|
124
|
+
- `npx knosky [path]` one-command launcher: indexes the folder, builds and opens the city, prints the MCP config (Claude Code / Claude Desktop / Cursor / VS Code) and suggested first prompts, then starts the local MCP server. Flags: `--no-open`, `--no-serve`. Reuses the verified indexer/renderer/MCP and inherits fail-closed `--share-safe` safety.
|
|
125
|
+
- Root `package.json` with a `knosky` bin and a `files` allowlist for publishing.
|
|
126
|
+
|
|
127
|
+
## [0.2.0] - 2026-06-29 — Security hardening + safe-share
|
|
128
|
+
|
|
129
|
+
### Security
|
|
130
|
+
- **Generated artifacts hardened against injection.** City data is embedded as inert JSON (`<script type="application/json">`) and the builder escapes `<` and U+2028/U+2029, so a repo containing `</script>` can no longer execute code in a generated city.
|
|
131
|
+
- **Untrusted names escaped.** District/category names, file titles, and kinds render through HTML escaping; colors are validated. A folder named `<img onerror=...>` renders as harmless text, not a live element.
|
|
132
|
+
- **Fail-closed secret scanning.** Expanded patterns (GitHub, OpenAI, Stripe, Google, Slack, GitLab, npm, JWT, SSH, AWS, PEM). The build now **fails closed** if a secret-like value is detected (override with `--allow-leaks`).
|
|
133
|
+
- **postMessage bridge gated.** Disabled in the standalone build; only active in embedded mode with an origin allowlist.
|
|
134
|
+
|
|
135
|
+
### Added
|
|
136
|
+
- `--share-safe` — strips the absolute root path (basename only) and prints a safety report.
|
|
137
|
+
- `--include-absolute-root` — opt back in to the full local path for private diagnostics.
|
|
138
|
+
- `SECURITY.md`, `PRIVACY.md`, `LIMITATIONS.md` — disclosure path + trust docs.
|
|
139
|
+
|
|
140
|
+
### Changed
|
|
141
|
+
- **Privacy default:** the generated index stores the folder **basename**, not the absolute path.
|
|
142
|
+
- **Ignore accuracy:** inside a git repo, git's own ignore rules are applied (`git check-ignore`); the conservative parser remains the fallback for non-git folders.
|
|
143
|
+
- **MCP input caps:** `kc_search` bounds query length and result count; ids are length-capped — avoids token burn and runaway output.
|
|
144
|
+
- Committed a lockfile for reproducible MCP installs.
|
|
145
|
+
|
|
146
|
+
## [0.1.0] - 2026-06-27 — Initial public release
|
|
147
|
+
- Local-first repo/folder → explorable isometric city (Kenney CC0 art).
|
|
148
|
+
- Local stdio MCP: `kc_search`, `kc_get_node`, `kc_list_categories`, `kc_get_provenance`.
|
|
149
|
+
- Single-file, self-contained city HTML. FSL-1.1-MIT license.
|
package/CREDITS.md
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
# Credits
|
|
2
|
-
|
|
3
|
-
## Artwork
|
|
4
|
-
City sprites (buildings, city details, landscape tiles, vehicles) are by **Kenney** — <https://kenney.nl>.
|
|
5
|
-
Licensed **CC0 1.0 Universal (public domain)**: <https://creativecommons.org/publicdomain/zero/1.0/>.
|
|
6
|
-
No rights reserved; attribution appreciated but not required. The original texture atlases ship in
|
|
7
|
-
`renderer/art/kenney/`.
|
|
8
|
-
|
|
9
|
-
## Software
|
|
10
|
-
KnoSky is released under the Functional Source License (FSL-1.1-MIT) — see [LICENSE.md](./LICENSE.md).
|
|
11
|
-
|
|
12
|
-
Dependencies:
|
|
13
|
-
- [`@modelcontextprotocol/sdk`](https://github.com/modelcontextprotocol/typescript-sdk) (MIT) — local MCP server.
|
|
14
|
-
- [`zod`](https://github.com/colinhacks/zod) (MIT) — schema validation.
|
|
1
|
+
# Credits
|
|
2
|
+
|
|
3
|
+
## Artwork
|
|
4
|
+
City sprites (buildings, city details, landscape tiles, vehicles) are by **Kenney** — <https://kenney.nl>.
|
|
5
|
+
Licensed **CC0 1.0 Universal (public domain)**: <https://creativecommons.org/publicdomain/zero/1.0/>.
|
|
6
|
+
No rights reserved; attribution appreciated but not required. The original texture atlases ship in
|
|
7
|
+
`renderer/art/kenney/`.
|
|
8
|
+
|
|
9
|
+
## Software
|
|
10
|
+
KnoSky is released under the Functional Source License (FSL-1.1-MIT) — see [LICENSE.md](./LICENSE.md).
|
|
11
|
+
|
|
12
|
+
Dependencies:
|
|
13
|
+
- [`@modelcontextprotocol/sdk`](https://github.com/modelcontextprotocol/typescript-sdk) (MIT) — local MCP server.
|
|
14
|
+
- [`zod`](https://github.com/colinhacks/zod) (MIT) — schema validation.
|
package/LICENSE.md
CHANGED
|
@@ -1,76 +1,76 @@
|
|
|
1
|
-
# Functional Source License, Version 1.1, MIT Future License
|
|
2
|
-
|
|
3
|
-
## Abbreviation
|
|
4
|
-
|
|
5
|
-
FSL-1.1-MIT
|
|
6
|
-
|
|
7
|
-
## Notice
|
|
8
|
-
|
|
9
|
-
Copyright 2026 Paul Poulose / Sathia
|
|
10
|
-
|
|
11
|
-
## Terms and Conditions
|
|
12
|
-
|
|
13
|
-
### Licensor ("We")
|
|
14
|
-
|
|
15
|
-
The party offering the Software under these Terms and Conditions.
|
|
16
|
-
|
|
17
|
-
### The Software
|
|
18
|
-
|
|
19
|
-
The "Software" is each version of the software that we make available under these Terms and Conditions, as indicated by our inclusion of these Terms and Conditions with the Software.
|
|
20
|
-
|
|
21
|
-
### License Grant
|
|
22
|
-
|
|
23
|
-
Subject to your compliance with this License Grant and the Patents, Redistribution and Trademark clauses below, we hereby grant you the right to use, copy, modify, create derivative works, publicly perform, publicly display and redistribute the Software for any Permitted Purpose identified below.
|
|
24
|
-
|
|
25
|
-
### Permitted Purpose
|
|
26
|
-
|
|
27
|
-
A Permitted Purpose is any purpose other than a Competing Use. A Competing Use means making the Software available to others in a commercial product or service that:
|
|
28
|
-
|
|
29
|
-
1. substitutes for the Software;
|
|
30
|
-
|
|
31
|
-
2. substitutes for any other product or service we offer using the Software that exists as of the date we make the Software available; or
|
|
32
|
-
|
|
33
|
-
3. offers the same or substantially similar functionality as the Software.
|
|
34
|
-
|
|
35
|
-
Permitted Purposes specifically include using the Software:
|
|
36
|
-
|
|
37
|
-
1. for your internal use and access;
|
|
38
|
-
|
|
39
|
-
2. for non-commercial education;
|
|
40
|
-
|
|
41
|
-
3. for non-commercial research; and
|
|
42
|
-
|
|
43
|
-
4. in connection with professional services that you provide to a licensee using the Software in accordance with these Terms and Conditions.
|
|
44
|
-
|
|
45
|
-
### Patents
|
|
46
|
-
|
|
47
|
-
To the extent your use for a Permitted Purpose would necessarily infringe our patents, the license grant above includes a license under our patents. If you make a claim against any party that the Software infringes or contributes to the infringement of any patent, then your patent license to the Software ends immediately.
|
|
48
|
-
|
|
49
|
-
### Redistribution
|
|
50
|
-
|
|
51
|
-
The Terms and Conditions apply to all copies, modifications and derivatives of the Software. If you redistribute any copies, modifications or derivatives of the Software, you must include a copy of or a link to these Terms and Conditions and not remove any copyright notices provided in or with the Software.
|
|
52
|
-
|
|
53
|
-
### Disclaimer
|
|
54
|
-
|
|
55
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR NON-INFRINGEMENT.
|
|
56
|
-
|
|
57
|
-
IN NO EVENT WILL WE HAVE ANY LIABILITY TO YOU ARISING OUT OF OR RELATED TO THE SOFTWARE, INCLUDING INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, EVEN IF WE HAVE BEEN INFORMED OF THEIR POSSIBILITY IN ADVANCE.
|
|
58
|
-
|
|
59
|
-
### Trademarks
|
|
60
|
-
|
|
61
|
-
Except for displaying the License Details and identifying us as the origin of the Software, you have no right under these Terms and Conditions to use our trademarks, trade names, service marks or product names.
|
|
62
|
-
|
|
63
|
-
## Grant of Future License
|
|
64
|
-
|
|
65
|
-
We hereby irrevocably grant you an additional license to use the Software under the MIT License that is effective on the second anniversary of the date we make the Software available. On or after that date, you may use the Software under the MIT License, in which case the following will apply:
|
|
66
|
-
|
|
67
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy of the Software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
68
|
-
|
|
69
|
-
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
70
|
-
|
|
71
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
72
|
-
|
|
73
|
-
---
|
|
74
|
-
|
|
75
|
-
> Note (not part of the license): "KnoSky" and "Sathia" are trademarks of the Licensor. FSL gives
|
|
76
|
-
> free use without allowing a competing product; it converts to MIT two years after each version's release.
|
|
1
|
+
# Functional Source License, Version 1.1, MIT Future License
|
|
2
|
+
|
|
3
|
+
## Abbreviation
|
|
4
|
+
|
|
5
|
+
FSL-1.1-MIT
|
|
6
|
+
|
|
7
|
+
## Notice
|
|
8
|
+
|
|
9
|
+
Copyright 2026 Paul Poulose / Sathia
|
|
10
|
+
|
|
11
|
+
## Terms and Conditions
|
|
12
|
+
|
|
13
|
+
### Licensor ("We")
|
|
14
|
+
|
|
15
|
+
The party offering the Software under these Terms and Conditions.
|
|
16
|
+
|
|
17
|
+
### The Software
|
|
18
|
+
|
|
19
|
+
The "Software" is each version of the software that we make available under these Terms and Conditions, as indicated by our inclusion of these Terms and Conditions with the Software.
|
|
20
|
+
|
|
21
|
+
### License Grant
|
|
22
|
+
|
|
23
|
+
Subject to your compliance with this License Grant and the Patents, Redistribution and Trademark clauses below, we hereby grant you the right to use, copy, modify, create derivative works, publicly perform, publicly display and redistribute the Software for any Permitted Purpose identified below.
|
|
24
|
+
|
|
25
|
+
### Permitted Purpose
|
|
26
|
+
|
|
27
|
+
A Permitted Purpose is any purpose other than a Competing Use. A Competing Use means making the Software available to others in a commercial product or service that:
|
|
28
|
+
|
|
29
|
+
1. substitutes for the Software;
|
|
30
|
+
|
|
31
|
+
2. substitutes for any other product or service we offer using the Software that exists as of the date we make the Software available; or
|
|
32
|
+
|
|
33
|
+
3. offers the same or substantially similar functionality as the Software.
|
|
34
|
+
|
|
35
|
+
Permitted Purposes specifically include using the Software:
|
|
36
|
+
|
|
37
|
+
1. for your internal use and access;
|
|
38
|
+
|
|
39
|
+
2. for non-commercial education;
|
|
40
|
+
|
|
41
|
+
3. for non-commercial research; and
|
|
42
|
+
|
|
43
|
+
4. in connection with professional services that you provide to a licensee using the Software in accordance with these Terms and Conditions.
|
|
44
|
+
|
|
45
|
+
### Patents
|
|
46
|
+
|
|
47
|
+
To the extent your use for a Permitted Purpose would necessarily infringe our patents, the license grant above includes a license under our patents. If you make a claim against any party that the Software infringes or contributes to the infringement of any patent, then your patent license to the Software ends immediately.
|
|
48
|
+
|
|
49
|
+
### Redistribution
|
|
50
|
+
|
|
51
|
+
The Terms and Conditions apply to all copies, modifications and derivatives of the Software. If you redistribute any copies, modifications or derivatives of the Software, you must include a copy of or a link to these Terms and Conditions and not remove any copyright notices provided in or with the Software.
|
|
52
|
+
|
|
53
|
+
### Disclaimer
|
|
54
|
+
|
|
55
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE OR NON-INFRINGEMENT.
|
|
56
|
+
|
|
57
|
+
IN NO EVENT WILL WE HAVE ANY LIABILITY TO YOU ARISING OUT OF OR RELATED TO THE SOFTWARE, INCLUDING INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES, EVEN IF WE HAVE BEEN INFORMED OF THEIR POSSIBILITY IN ADVANCE.
|
|
58
|
+
|
|
59
|
+
### Trademarks
|
|
60
|
+
|
|
61
|
+
Except for displaying the License Details and identifying us as the origin of the Software, you have no right under these Terms and Conditions to use our trademarks, trade names, service marks or product names.
|
|
62
|
+
|
|
63
|
+
## Grant of Future License
|
|
64
|
+
|
|
65
|
+
We hereby irrevocably grant you an additional license to use the Software under the MIT License that is effective on the second anniversary of the date we make the Software available. On or after that date, you may use the Software under the MIT License, in which case the following will apply:
|
|
66
|
+
|
|
67
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of the Software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
68
|
+
|
|
69
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
|
70
|
+
|
|
71
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
> Note (not part of the license): "KnoSky" and "Sathia" are trademarks of the Licensor. FSL gives
|
|
76
|
+
> free use without allowing a competing product; it converts to MIT two years after each version's release.
|
package/LIMITATIONS.md
CHANGED
|
@@ -1,23 +1,33 @@
|
|
|
1
|
-
# Known limitations
|
|
2
|
-
|
|
3
|
-
KnoSky is a **map and citation layer**, not a code-intelligence engine. Being clear about the boundary keeps expectations honest.
|
|
4
|
-
|
|
5
|
-
## What KnoSky is good at
|
|
6
|
-
|
|
7
|
-
- Orienting you in a repo or docs folder fast: where things live, how areas connect.
|
|
8
|
-
- Giving you (and your AI assistant, via the local MCP) **cited pointers** back to the real source.
|
|
9
|
-
- A private, always-fresh, $0 index that runs entirely on your machine.
|
|
10
|
-
|
|
11
|
-
## What KnoSky is not (yet)
|
|
12
|
-
|
|
13
|
-
- **Not deep code intelligence.** It does not parse call graphs, type information, runtime dependencies, or semantic architecture. It indexes pointers and light projections, not file bodies.
|
|
14
|
-
- **Not a full-text / code-RAG search.** It will not answer questions over the *contents* of your files. For deep code Q&A, your AI assistant should read the source it cites (that's what the MCP citations are for) or use a dedicated code-search tool.
|
|
15
|
-
- **Not a cloud service.** No sync, no multi-user, no hosted backend.
|
|
16
|
-
|
|
17
|
-
## Practical notes
|
|
18
|
-
|
|
19
|
-
- **Ignore matching:** inside a git repo, git's own ignore rules are applied; outside git, a conservative `.gitignore`/`.kcignore` parser is used and may differ from git in edge cases.
|
|
20
|
-
- **Large repos:** indexing is capped (default 6000 files, `--max`) to stay fast; very large monorepos may need `--max` raised or extra `.kcignore` entries.
|
|
21
|
-
- **Categories:** the default categorizer uses top-level folder names. AI-suggested categories are opt-in and metadata-only.
|
|
22
|
-
|
|
23
|
-
|
|
1
|
+
# Known limitations
|
|
2
|
+
|
|
3
|
+
KnoSky is a **map and citation layer**, not a code-intelligence engine. Being clear about the boundary keeps expectations honest.
|
|
4
|
+
|
|
5
|
+
## What KnoSky is good at
|
|
6
|
+
|
|
7
|
+
- Orienting you in a repo or docs folder fast: where things live, how areas connect.
|
|
8
|
+
- Giving you (and your AI assistant, via the local MCP) **cited pointers** back to the real source.
|
|
9
|
+
- A private, always-fresh, $0 index that runs entirely on your machine.
|
|
10
|
+
|
|
11
|
+
## What KnoSky is not (yet)
|
|
12
|
+
|
|
13
|
+
- **Not deep code intelligence.** It does not parse call graphs, type information, runtime dependencies, or semantic architecture. It indexes pointers and light projections, not file bodies.
|
|
14
|
+
- **Not a full-text / code-RAG search.** It will not answer questions over the *contents* of your files. For deep code Q&A, your AI assistant should read the source it cites (that's what the MCP citations are for) or use a dedicated code-search tool.
|
|
15
|
+
- **Not a cloud service.** No sync, no multi-user, no hosted backend.
|
|
16
|
+
|
|
17
|
+
## Practical notes
|
|
18
|
+
|
|
19
|
+
- **Ignore matching:** inside a git repo, git's own ignore rules are applied; outside git, a conservative `.gitignore`/`.kcignore` parser is used and may differ from git in edge cases.
|
|
20
|
+
- **Large repos:** indexing is capped (default 6000 files, `--max`) to stay fast; very large monorepos may need `--max` raised or extra `.kcignore` entries.
|
|
21
|
+
- **Categories:** the default categorizer uses top-level folder names. AI-suggested categories are opt-in and metadata-only.
|
|
22
|
+
|
|
23
|
+
## Network lockdown scope (F0.5)
|
|
24
|
+
|
|
25
|
+
The OS-level network sandbox (`core/net-lockdown.mjs`, wraps the MCP server / evaluator process) is **network-only by design**, not a general filesystem or process jail:
|
|
26
|
+
|
|
27
|
+
- On macOS, the `sandbox-exec` profile allows filesystem and process operations (the evaluator needs full read access to your indexed files) and denies only non-loopback outbound/inbound network -- confirmed via PR #60 review (2026-07-05).
|
|
28
|
+
- On Windows, there is currently no runtime AppContainer detection -- `knosky doctor` always reports it as inactive. This is safe (nothing in the code claims runtime enforcement on Windows either way: `supported` is always `false`), but real Windows network isolation requires packaging-time AppContainer/WFP configuration, which this tool does not automate.
|
|
29
|
+
- On Linux, `unshare --user --net` provides a real kernel-enforced network namespace.
|
|
30
|
+
|
|
31
|
+
If you depend on this for anything beyond defense-in-depth / `doctor` visibility, treat macOS and Windows as advisory only; Linux's `unshare` path is the one with an actual kernel-enforced guarantee.
|
|
32
|
+
|
|
33
|
+
See also: [README.md](README.md), [PRIVACY.md](PRIVACY.md), [SECURITY.md](SECURITY.md).
|
package/PRIVACY.md
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
# Privacy
|
|
2
|
-
|
|
3
|
-
KnoSky is **local-first**. It runs on your machine, reads your folder, and writes files on your machine. There is no KnoSky account, no server, and no telemetry. Your source code is never uploaded by KnoSky.
|
|
4
|
-
|
|
5
|
-
## What KnoSky reads
|
|
6
|
-
|
|
7
|
-
To build the map, the indexer reads file and folder names and the **first ~4 KB** of text files (to pull a title, a few headings, and a one-line excerpt). It does **not** copy full file bodies.
|
|
8
|
-
|
|
9
|
-
## What ends up in a generated city
|
|
10
|
-
|
|
11
|
-
A generated `city-data.json` / city HTML contains **pointers and light projections**, not your code:
|
|
12
|
-
|
|
13
|
-
- file paths (relative), folder/category names
|
|
14
|
-
- titles, a handful of headings, and a short (<=200 char) excerpt per file
|
|
15
|
-
- tags (file extensions), simple link relationships, and a source revision
|
|
16
|
-
|
|
17
|
-
It does **not** contain full file contents.
|
|
18
|
-
|
|
19
|
-
## Defaults that protect you
|
|
20
|
-
|
|
21
|
-
- The absolute root path is **stripped to its basename** by default (use `--include-absolute-root` only for private, local diagnostics).
|
|
22
|
-
- Text projections run through a **secret/PII scrubber**, and the build **fails closed** if a secret-like value is detected (override only with `--allow-leaks`).
|
|
23
|
-
- `--share-safe` prints a safety report (files scanned/skipped, secrets found, risk level) before you share anything.
|
|
24
|
-
- `.gitignore` and a `.kcignore` are honored; inside a git repo, git's own ignore rules are applied.
|
|
25
|
-
|
|
26
|
-
## What we don't promise
|
|
27
|
-
|
|
28
|
-
We do **not** claim "zero data risk." A generated city is like a directory listing with short snippets. Treat it accordingly: **review a city file (or build with `--share-safe`) before sharing it**, and open city files you did not generate the same way you'd open any untrusted HTML.
|
|
29
|
-
|
|
30
|
-
See also: [SECURITY.md](SECURITY.md), [LIMITATIONS.md](LIMITATIONS.md).
|
|
1
|
+
# Privacy
|
|
2
|
+
|
|
3
|
+
KnoSky is **local-first**. It runs on your machine, reads your folder, and writes files on your machine. There is no KnoSky account, no server, and no telemetry. Your source code is never uploaded by KnoSky.
|
|
4
|
+
|
|
5
|
+
## What KnoSky reads
|
|
6
|
+
|
|
7
|
+
To build the map, the indexer reads file and folder names and the **first ~4 KB** of text files (to pull a title, a few headings, and a one-line excerpt). It does **not** copy full file bodies.
|
|
8
|
+
|
|
9
|
+
## What ends up in a generated city
|
|
10
|
+
|
|
11
|
+
A generated `city-data.json` / city HTML contains **pointers and light projections**, not your code:
|
|
12
|
+
|
|
13
|
+
- file paths (relative), folder/category names
|
|
14
|
+
- titles, a handful of headings, and a short (<=200 char) excerpt per file
|
|
15
|
+
- tags (file extensions), simple link relationships, and a source revision
|
|
16
|
+
|
|
17
|
+
It does **not** contain full file contents.
|
|
18
|
+
|
|
19
|
+
## Defaults that protect you
|
|
20
|
+
|
|
21
|
+
- The absolute root path is **stripped to its basename** by default (use `--include-absolute-root` only for private, local diagnostics).
|
|
22
|
+
- Text projections run through a **secret/PII scrubber**, and the build **fails closed** if a secret-like value is detected (override only with `--allow-leaks`).
|
|
23
|
+
- `--share-safe` prints a safety report (files scanned/skipped, secrets found, risk level) before you share anything.
|
|
24
|
+
- `.gitignore` and a `.kcignore` are honored; inside a git repo, git's own ignore rules are applied.
|
|
25
|
+
|
|
26
|
+
## What we don't promise
|
|
27
|
+
|
|
28
|
+
We do **not** claim "zero data risk." A generated city is like a directory listing with short snippets. Treat it accordingly: **review a city file (or build with `--share-safe`) before sharing it**, and open city files you did not generate the same way you'd open any untrusted HTML.
|
|
29
|
+
|
|
30
|
+
See also: [SECURITY.md](SECURITY.md), [LIMITATIONS.md](LIMITATIONS.md).
|