@hasna/knowledge 0.2.28 → 0.2.29
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 +101 -101
- package/bin/{open-knowledge-mcp.js → knowledge-mcp.js} +9 -10
- package/bin/{open-knowledge.js → knowledge.js} +19 -19
- package/dist/index.js +2 -2
- package/docs/architecture/ai-native-knowledge-base.md +16 -16
- package/docs/architecture/hosted-wrapper-responsibilities.md +5 -5
- package/docs/architecture/hybrid-semantic-search.md +12 -12
- package/docs/canonical-secrets-bootstrap-2026-06-08.md +1 -1
- package/docs/examples/company-wiki-workflow.md +19 -19
- package/docs/migration/json-to-sqlite.md +17 -17
- package/package.json +4 -5
package/dist/index.js
CHANGED
|
@@ -5080,7 +5080,7 @@ function agentSchemaTemplate() {
|
|
|
5080
5080
|
## Source Rules
|
|
5081
5081
|
|
|
5082
5082
|
- Treat open-files source references as the preferred source of truth.
|
|
5083
|
-
- Do not copy raw source files into
|
|
5083
|
+
- Do not copy raw source files into knowledge.
|
|
5084
5084
|
- Cite every durable fact with a source URI, revision/hash when available, and optional span.
|
|
5085
5085
|
- Mark uncertainty explicitly when sources disagree or are incomplete.
|
|
5086
5086
|
|
|
@@ -5341,7 +5341,7 @@ class KnowledgeService {
|
|
|
5341
5341
|
artifact_uri_prefix: storage.artifact_store.uri_prefix,
|
|
5342
5342
|
canonical_hasna_xyz: storage.canonical_hasna_xyz,
|
|
5343
5343
|
config_path: workspace.configPath,
|
|
5344
|
-
next: mode === "hosted" ? ["
|
|
5344
|
+
next: mode === "hosted" ? ["knowledge auth login --api-key <key>", "knowledge storage status --json", "knowledge remote contracts --json"] : ["knowledge search <query>", "knowledge <prompt>"],
|
|
5345
5345
|
message: `Set knowledge mode to ${mode}`
|
|
5346
5346
|
};
|
|
5347
5347
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# AI-Native Knowledge Base Architecture
|
|
2
2
|
|
|
3
|
-
`
|
|
3
|
+
`knowledge` is the local-first knowledge engine for Hasna projects and
|
|
4
4
|
agents. It should make company knowledge durable, searchable, citable, and safe
|
|
5
5
|
for agents to reuse. It is not the raw file bucket. Raw source bytes belong to
|
|
6
6
|
`open-files`.
|
|
@@ -87,7 +87,7 @@ workspace they describe.
|
|
|
87
87
|
|
|
88
88
|
## Source References
|
|
89
89
|
|
|
90
|
-
`
|
|
90
|
+
`knowledge` stores references, not raw source bytes. Supported source ref
|
|
91
91
|
forms:
|
|
92
92
|
|
|
93
93
|
```text
|
|
@@ -124,8 +124,8 @@ without reconstructing it later.
|
|
|
124
124
|
The local resolver is exposed through:
|
|
125
125
|
|
|
126
126
|
```bash
|
|
127
|
-
|
|
128
|
-
|
|
127
|
+
knowledge source resolve <source-ref> --purpose knowledge_answer --json
|
|
128
|
+
knowledge ingest source <source-ref> --purpose knowledge_index --json
|
|
129
129
|
```
|
|
130
130
|
|
|
131
131
|
and the MCP tool `ok_resolve_source`. It reads the knowledge catalog only,
|
|
@@ -169,7 +169,7 @@ s3://hasna-xyz-opensource-knowledge-prod/.hasna/apps/knowledge/
|
|
|
169
169
|
The app config can be materialized with:
|
|
170
170
|
|
|
171
171
|
```bash
|
|
172
|
-
|
|
172
|
+
knowledge setup --mode hosted --canonical-hasna-xyz --scope project --json
|
|
173
173
|
```
|
|
174
174
|
|
|
175
175
|
The canonical metadata-only secret paths are:
|
|
@@ -190,7 +190,7 @@ run outputs.
|
|
|
190
190
|
The storage contract is inspectable through:
|
|
191
191
|
|
|
192
192
|
```bash
|
|
193
|
-
|
|
193
|
+
knowledge storage status --scope project --json
|
|
194
194
|
```
|
|
195
195
|
|
|
196
196
|
That contract names the local app path, SQLite catalog, generated artifact
|
|
@@ -251,7 +251,7 @@ new-article candidates.
|
|
|
251
251
|
Search is hybrid:
|
|
252
252
|
|
|
253
253
|
1. `open-files` supplies source manifests, revisions, hashes, and extracted text.
|
|
254
|
-
2. `
|
|
254
|
+
2. `knowledge` chunks extracted text and generated wiki pages.
|
|
255
255
|
3. Chunks and pages are indexed with keyword search and embeddings.
|
|
256
256
|
4. Queries run through keyword FTS, vector search, and wiki/citation graph
|
|
257
257
|
expansion.
|
|
@@ -263,14 +263,14 @@ mode can use Postgres with pgvector or a managed vector index. Permission
|
|
|
263
263
|
filters must be applied before agent context is assembled.
|
|
264
264
|
|
|
265
265
|
The first local semantic-search implementation indexes derived chunks with
|
|
266
|
-
`
|
|
267
|
-
`
|
|
268
|
-
`
|
|
266
|
+
`knowledge embeddings index` and queries them with
|
|
267
|
+
`knowledge search --semantic` or the lower-level
|
|
268
|
+
`knowledge embeddings search`. It stores OpenAI embedding vectors as
|
|
269
269
|
generated metadata rows, not raw source bytes, and pins each row to `open-files`
|
|
270
270
|
provenance: source ref/URI, revision/hash, chunk offsets, token count, provider,
|
|
271
271
|
model, dimensions, status, and timestamps. The structured `search` contract
|
|
272
272
|
merges keyword FTS, wiki/index catalog hits, generated wiki chunks, and optional
|
|
273
|
-
vector results. `
|
|
273
|
+
vector results. `knowledge search --context` and MCP `knowledge_search`
|
|
274
274
|
turn those rows into reranked citation context packs with selected excerpts,
|
|
275
275
|
freshness and permission notes, graph evidence, and final rerank scores. The
|
|
276
276
|
local SQLite index can later move to pgvector or a managed hosted vector store
|
|
@@ -291,7 +291,7 @@ These resources expose derived chunks, generated wiki artifacts, citations, run
|
|
|
291
291
|
ledgers, and storage/index metadata without exposing raw source bytes.
|
|
292
292
|
|
|
293
293
|
Index freshness is explicit. `reindex_queue` tracks missing or stale embedding
|
|
294
|
-
work, `
|
|
294
|
+
work, `knowledge reindex status|enqueue|embeddings` operates the local
|
|
295
295
|
queue, and MCP exposes the same controls through `ok_reindex_status`,
|
|
296
296
|
`ok_reindex_enqueue`, and `ok_reindex_embeddings`. Hosted mode can map the same
|
|
297
297
|
contract to worker queues, S3/object artifact sync, Postgres/pgvector, or a
|
|
@@ -317,14 +317,14 @@ The command should:
|
|
|
317
317
|
7. Record a run ledger with tool calls, sources, costs, outputs, and generated
|
|
318
318
|
records.
|
|
319
319
|
|
|
320
|
-
The first implementation exposes this as `
|
|
320
|
+
The first implementation exposes this as `knowledge ask|build <prompt>`
|
|
321
321
|
and the installed `knowledge <prompt>` bin alias. It retrieves read-only context,
|
|
322
322
|
returns a local citation draft by default, optionally calls AI SDK generation via
|
|
323
323
|
`--generate`, records `runs`, `run_events`, and `provider_usage`, and only
|
|
324
324
|
proposes durable wiki updates until the wiki compile/write task owns writes.
|
|
325
325
|
|
|
326
326
|
Provider-native web search is exposed separately as
|
|
327
|
-
`
|
|
327
|
+
`knowledge web search <query>` and MCP `ok_web_search`. Real network access
|
|
328
328
|
is safety-gated; OpenAI and Anthropic use provider web-search tools through AI
|
|
329
329
|
SDK, while DeepSeek remains a future fallback/external-search path. Returned web
|
|
330
330
|
snippets can optionally be filed as read-only `web` source refs for later local
|
|
@@ -340,14 +340,14 @@ AI provider setup is BYOK and AI SDK v6 based. The local provider layer tracks:
|
|
|
340
340
|
- DeepSeek via `@ai-sdk/deepseek`, defaulting to `deepseek:deepseek-chat`.
|
|
341
341
|
|
|
342
342
|
Model aliases live in config and can be inspected with
|
|
343
|
-
`
|
|
343
|
+
`knowledge providers models`. Credentials are resolved from env vars by
|
|
344
344
|
default, checked without making provider calls, and usage can be normalized into
|
|
345
345
|
the existing `provider_usage` table for future prompt, embedding, and web-search
|
|
346
346
|
runs.
|
|
347
347
|
|
|
348
348
|
## Non-Goals
|
|
349
349
|
|
|
350
|
-
- Do not make `
|
|
350
|
+
- Do not make `knowledge` own raw source files.
|
|
351
351
|
- Do not make hosted account, billing, worker, or tenant state required for local
|
|
352
352
|
use.
|
|
353
353
|
- Do not let semantic search bypass permissions.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Hosted Wrapper Responsibilities
|
|
2
2
|
|
|
3
|
-
`
|
|
3
|
+
`knowledge` stays local-first and open source. A future hosted/SaaS wrapper
|
|
4
4
|
can implement remote APIs around the same contracts, but tenant state,
|
|
5
5
|
infrastructure ownership, and commercial controls must live outside this
|
|
6
6
|
package.
|
|
@@ -30,7 +30,7 @@ The hosted wrapper owns:
|
|
|
30
30
|
|
|
31
31
|
Local mode must not require hosted identity, billing, queue workers, or hosted
|
|
32
32
|
object storage. Hosted mode is an explicit remote boundary selected through
|
|
33
|
-
`
|
|
33
|
+
`knowledge setup --mode hosted` plus `KNOWLEDGE_API_URL` and
|
|
34
34
|
`KNOWLEDGE_API_KEY`.
|
|
35
35
|
|
|
36
36
|
## Identity And Access
|
|
@@ -66,9 +66,9 @@ should own connector orchestration and source sync:
|
|
|
66
66
|
- Source snapshots, immutable object ids, revisions, hashes, MIME metadata,
|
|
67
67
|
extracted text refs, ACL metadata, and change outboxes.
|
|
68
68
|
- Read-only resolver APIs that expose derived extracted text or allowed chunks
|
|
69
|
-
to `
|
|
69
|
+
to `knowledge` without exposing storage credentials.
|
|
70
70
|
|
|
71
|
-
`
|
|
71
|
+
`knowledge` should continue to consume manifests, source refs, and outbox
|
|
72
72
|
events. It should not own connector credentials or raw source object lifecycle.
|
|
73
73
|
|
|
74
74
|
## Storage And Secrets
|
|
@@ -120,7 +120,7 @@ revision, artifact hash, or run id where possible.
|
|
|
120
120
|
The wrapper should implement the contract printed by:
|
|
121
121
|
|
|
122
122
|
```bash
|
|
123
|
-
|
|
123
|
+
knowledge remote contracts --scope project --json
|
|
124
124
|
```
|
|
125
125
|
|
|
126
126
|
Required endpoint families:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Hybrid Semantic Search Architecture
|
|
2
2
|
|
|
3
|
-
`
|
|
3
|
+
`knowledge` search is hybrid by design. Keyword search, semantic vector
|
|
4
4
|
search, wiki graph traversal, and citation/provenance signals each solve a
|
|
5
5
|
different part of the retrieval problem.
|
|
6
6
|
|
|
@@ -15,7 +15,7 @@ different part of the retrieval problem.
|
|
|
15
15
|
- Read-only content resolution for deeper reads.
|
|
16
16
|
- Change events that trigger incremental reindexing.
|
|
17
17
|
|
|
18
|
-
`
|
|
18
|
+
`knowledge` owns:
|
|
19
19
|
|
|
20
20
|
- Chunk boundaries and chunk metadata.
|
|
21
21
|
- Embeddings for source chunks, wiki pages, decisions, and durable answers.
|
|
@@ -49,13 +49,13 @@ contracts.
|
|
|
49
49
|
The current local command surface is:
|
|
50
50
|
|
|
51
51
|
```bash
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
52
|
+
knowledge search "company wiki policy" --scope project --json
|
|
53
|
+
knowledge search "company wiki policy" --scope project --semantic --json
|
|
54
|
+
knowledge search "company wiki policy" --scope project --context --json
|
|
55
|
+
knowledge reindex status --scope project --json
|
|
56
|
+
knowledge reindex embeddings --scope project --fake --json
|
|
57
|
+
knowledge embeddings index --scope project --model openai:text-embedding-3-small
|
|
58
|
+
knowledge embeddings search "company wiki policy" --scope project --json
|
|
59
59
|
```
|
|
60
60
|
|
|
61
61
|
`search` is the structured hybrid layer for agents. `embeddings search` is the
|
|
@@ -139,15 +139,15 @@ They should receive context packs:
|
|
|
139
139
|
This keeps agent prompts stable while the retrieval internals evolve.
|
|
140
140
|
|
|
141
141
|
The local context-pack implementation is available through
|
|
142
|
-
`
|
|
142
|
+
`knowledge search --context` and MCP `knowledge_search`. It reranks merged
|
|
143
143
|
search rows using exact-term coverage, citation availability, source freshness,
|
|
144
144
|
and source/wiki authority, then emits excerpts and citation objects that preserve
|
|
145
145
|
source refs, artifact URIs, revision/hash metadata, offsets, and provenance.
|
|
146
|
-
`
|
|
146
|
+
`knowledge ask|build <prompt>`, the installed `knowledge <prompt>` alias,
|
|
147
147
|
and MCP `knowledge_ask|knowledge_build` wrap this context pack in a run ledger
|
|
148
148
|
and return a citation draft or explicit AI SDK generated answer.
|
|
149
149
|
|
|
150
|
-
Provider-native web search lives beside local retrieval. `
|
|
150
|
+
Provider-native web search lives beside local retrieval. `knowledge web
|
|
151
151
|
search` and MCP `knowledge_web_search` are safety-gated, capture provider
|
|
152
152
|
sources, and can file snippets as read-only `web` source refs so later local
|
|
153
153
|
retrieval treats them like other cited sources. The lower-level `ok_web_search`
|
|
@@ -61,7 +61,7 @@ hasna/xyz/opensource/knowledge/prod/s3
|
|
|
61
61
|
|
|
62
62
|
Meaning:
|
|
63
63
|
|
|
64
|
-
- `env`:
|
|
64
|
+
- `env`: knowledge production app config metadata.
|
|
65
65
|
- `aws`: AWS account/profile/region and related app config metadata.
|
|
66
66
|
- `s3`: canonical app storage bucket metadata for
|
|
67
67
|
`hasna-xyz-opensource-knowledge-prod`.
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# Company Wiki Workflow
|
|
2
2
|
|
|
3
|
-
This workflow shows how to use `
|
|
3
|
+
This workflow shows how to use `knowledge` as an AI-native company wiki
|
|
4
4
|
layer over source files owned by `open-files`.
|
|
5
5
|
|
|
6
6
|
## 1. Initialize The Project Workspace
|
|
7
7
|
|
|
8
8
|
```bash
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
knowledge paths --scope project --json
|
|
10
|
+
knowledge db init --scope project --json
|
|
11
|
+
knowledge wiki init --scope project --json
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
Project state is created under:
|
|
@@ -50,7 +50,7 @@ and extracted text:
|
|
|
50
50
|
Then ingest it:
|
|
51
51
|
|
|
52
52
|
```bash
|
|
53
|
-
|
|
53
|
+
knowledge ingest manifest ./open-files-manifest.jsonl --scope project --json
|
|
54
54
|
```
|
|
55
55
|
|
|
56
56
|
The knowledge app stores source refs, revisions, redacted chunks, offsets, and
|
|
@@ -61,20 +61,20 @@ citations. It does not store raw source bytes or connector credentials.
|
|
|
61
61
|
Run local keyword/catalog search first:
|
|
62
62
|
|
|
63
63
|
```bash
|
|
64
|
-
|
|
64
|
+
knowledge search "expense policy" --scope project --json
|
|
65
65
|
```
|
|
66
66
|
|
|
67
67
|
Add deterministic local semantic indexing for a smoke test:
|
|
68
68
|
|
|
69
69
|
```bash
|
|
70
|
-
|
|
71
|
-
|
|
70
|
+
knowledge embeddings index --scope project --fake --dimensions 8 --json
|
|
71
|
+
knowledge search "expense policy" --scope project --semantic --fake --dimensions 8 --json
|
|
72
72
|
```
|
|
73
73
|
|
|
74
74
|
Ask for an agent-ready context pack:
|
|
75
75
|
|
|
76
76
|
```bash
|
|
77
|
-
|
|
77
|
+
knowledge search "expense policy" --scope project --context --json
|
|
78
78
|
```
|
|
79
79
|
|
|
80
80
|
## 4. Answer With Citations
|
|
@@ -104,7 +104,7 @@ citations, and proposed wiki updates.
|
|
|
104
104
|
Compile a cited page from indexed chunks:
|
|
105
105
|
|
|
106
106
|
```bash
|
|
107
|
-
|
|
107
|
+
knowledge wiki compile "expense policy" \
|
|
108
108
|
--title "Expense Policy" \
|
|
109
109
|
--scope project \
|
|
110
110
|
--json
|
|
@@ -113,7 +113,7 @@ open-knowledge wiki compile "expense policy" \
|
|
|
113
113
|
File an approved answer note:
|
|
114
114
|
|
|
115
115
|
```bash
|
|
116
|
-
|
|
116
|
+
knowledge wiki file-answer "How do we approve expenses?" \
|
|
117
117
|
--content "Use manager approval and cite the policy source." \
|
|
118
118
|
--approve-write \
|
|
119
119
|
--scope project \
|
|
@@ -123,7 +123,7 @@ open-knowledge wiki file-answer "How do we approve expenses?" \
|
|
|
123
123
|
Lint the generated wiki:
|
|
124
124
|
|
|
125
125
|
```bash
|
|
126
|
-
|
|
126
|
+
knowledge wiki lint --scope project --json
|
|
127
127
|
```
|
|
128
128
|
|
|
129
129
|
Generated pages are written through the artifact store and cataloged in
|
|
@@ -135,9 +135,9 @@ Markdown file.
|
|
|
135
135
|
Consume open-files outbox events after source changes:
|
|
136
136
|
|
|
137
137
|
```bash
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
138
|
+
knowledge reindex outbox ./open-files-outbox.jsonl --scope project --json
|
|
139
|
+
knowledge reindex enqueue --scope project --json
|
|
140
|
+
knowledge reindex embeddings --scope project --fake --dimensions 8 --json
|
|
141
141
|
```
|
|
142
142
|
|
|
143
143
|
This invalidates stale source chunks and refreshes embeddings without losing the
|
|
@@ -148,13 +148,13 @@ source refs and citation provenance.
|
|
|
148
148
|
Run MCP over stdio:
|
|
149
149
|
|
|
150
150
|
```bash
|
|
151
|
-
|
|
151
|
+
knowledge-mcp
|
|
152
152
|
```
|
|
153
153
|
|
|
154
154
|
Or run local Streamable HTTP:
|
|
155
155
|
|
|
156
156
|
```bash
|
|
157
|
-
|
|
157
|
+
knowledge-mcp --http --port 8819
|
|
158
158
|
```
|
|
159
159
|
|
|
160
160
|
Agents should prefer stable tools such as `knowledge_search`, `knowledge_ask`,
|
|
@@ -168,8 +168,8 @@ Agents should prefer stable tools such as `knowledge_search`, `knowledge_ask`,
|
|
|
168
168
|
Hosted mode is only a remote client boundary:
|
|
169
169
|
|
|
170
170
|
```bash
|
|
171
|
-
|
|
172
|
-
|
|
171
|
+
knowledge setup --mode hosted --api-url https://knowledge.hasna.xyz --scope project --json
|
|
172
|
+
knowledge remote contracts --scope project --json
|
|
173
173
|
```
|
|
174
174
|
|
|
175
175
|
Generated artifacts may use S3 when configured, but raw source files still stay
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# JSON To SQLite Migration
|
|
2
2
|
|
|
3
|
-
`
|
|
3
|
+
`knowledge` began as a simple JSON note store. Current project mode uses a
|
|
4
4
|
Hasna app workspace and a versioned SQLite catalog:
|
|
5
5
|
|
|
6
6
|
```text
|
|
@@ -54,20 +54,20 @@ recorded correctly.
|
|
|
54
54
|
Initialize the project catalog:
|
|
55
55
|
|
|
56
56
|
```bash
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
knowledge db init --scope project --json
|
|
58
|
+
knowledge wiki init --scope project --json
|
|
59
59
|
```
|
|
60
60
|
|
|
61
61
|
Import open-files manifests:
|
|
62
62
|
|
|
63
63
|
```bash
|
|
64
|
-
|
|
64
|
+
knowledge ingest manifest ./open-files-manifest.jsonl --scope project --json
|
|
65
65
|
```
|
|
66
66
|
|
|
67
67
|
Import one allowed source ref:
|
|
68
68
|
|
|
69
69
|
```bash
|
|
70
|
-
|
|
70
|
+
knowledge ingest source file:///absolute/path/to/handbook.md \
|
|
71
71
|
--purpose knowledge_index \
|
|
72
72
|
--scope project \
|
|
73
73
|
--json
|
|
@@ -76,7 +76,7 @@ open-knowledge ingest source file:///absolute/path/to/handbook.md \
|
|
|
76
76
|
Resolve indexed source evidence:
|
|
77
77
|
|
|
78
78
|
```bash
|
|
79
|
-
|
|
79
|
+
knowledge source resolve open-files://file/file_123/revision/rev_456 \
|
|
80
80
|
--purpose knowledge_answer \
|
|
81
81
|
--scope project \
|
|
82
82
|
--json
|
|
@@ -85,16 +85,16 @@ open-knowledge source resolve open-files://file/file_123/revision/rev_456 \
|
|
|
85
85
|
## Recommended Migration Path
|
|
86
86
|
|
|
87
87
|
1. Keep the legacy JSON note store as an exportable compatibility layer.
|
|
88
|
-
2. Run `
|
|
88
|
+
2. Run `knowledge paths --scope project --json` and confirm the project
|
|
89
89
|
workspace is `.hasna/apps/knowledge`.
|
|
90
|
-
3. Initialize `knowledge.db` with `
|
|
90
|
+
3. Initialize `knowledge.db` with `knowledge db init --scope project`.
|
|
91
91
|
4. Ingest source manifests from `open-files` rather than copying raw files into
|
|
92
|
-
`
|
|
93
|
-
5. Run `
|
|
94
|
-
6. Run `
|
|
95
|
-
7. Run `
|
|
92
|
+
`knowledge`.
|
|
93
|
+
5. Run `knowledge search --scope project --json` to verify source chunks.
|
|
94
|
+
6. Run `knowledge wiki compile` for durable cited pages.
|
|
95
|
+
7. Run `knowledge wiki lint --scope project --json` before treating pages
|
|
96
96
|
as company knowledge.
|
|
97
|
-
8. Use `
|
|
97
|
+
8. Use `knowledge export --format jsonl` if legacy notes need to be
|
|
98
98
|
archived or transformed outside the app.
|
|
99
99
|
|
|
100
100
|
## JSON Output Contracts
|
|
@@ -122,7 +122,7 @@ when successful and command-specific fields such as:
|
|
|
122
122
|
```bash
|
|
123
123
|
HASNA_KNOWLEDGE_ALLOW_S3_READS=1 \
|
|
124
124
|
HASNA_KNOWLEDGE_ALLOWED_S3_BUCKETS=my-bucket \
|
|
125
|
-
|
|
125
|
+
knowledge ingest manifest s3://my-bucket/path/manifest.jsonl \
|
|
126
126
|
--scope project \
|
|
127
127
|
--json
|
|
128
128
|
```
|
|
@@ -131,7 +131,7 @@ open-knowledge ingest manifest s3://my-bucket/path/manifest.jsonl \
|
|
|
131
131
|
|
|
132
132
|
```bash
|
|
133
133
|
HASNA_KNOWLEDGE_WEB_SEARCH=1 \
|
|
134
|
-
|
|
134
|
+
knowledge web search "current policy source" --provider openai --json
|
|
135
135
|
```
|
|
136
136
|
|
|
137
137
|
- Use `--approve-write` only when a generated wiki artifact should be durable.
|
|
@@ -142,8 +142,8 @@ Hosted mode should not change local migration semantics. It only records a
|
|
|
142
142
|
remote API boundary:
|
|
143
143
|
|
|
144
144
|
```bash
|
|
145
|
-
|
|
146
|
-
|
|
145
|
+
knowledge setup --mode hosted --api-url https://knowledge.hasna.xyz --scope project --json
|
|
146
|
+
knowledge remote contracts --scope project --json
|
|
147
147
|
```
|
|
148
148
|
|
|
149
149
|
A SaaS wrapper can later sync generated artifacts, run jobs, enforce tenant ACLs,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hasna/knowledge",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.29",
|
|
4
4
|
"description": "Agent-friendly local knowledge CLI with JSON output, pagination, and safe destructive actions",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -12,9 +12,8 @@
|
|
|
12
12
|
"main": "./dist/index.js",
|
|
13
13
|
"types": "./dist/index.d.ts",
|
|
14
14
|
"bin": {
|
|
15
|
-
"knowledge": "bin/
|
|
16
|
-
"
|
|
17
|
-
"open-knowledge-mcp": "bin/open-knowledge-mcp.js"
|
|
15
|
+
"knowledge": "bin/knowledge.js",
|
|
16
|
+
"knowledge-mcp": "bin/knowledge-mcp.js"
|
|
18
17
|
},
|
|
19
18
|
"files": [
|
|
20
19
|
"bin",
|
|
@@ -26,7 +25,7 @@
|
|
|
26
25
|
"scripts": {
|
|
27
26
|
"test": "bun test",
|
|
28
27
|
"test:cli": "bun test tests/cli.test.ts",
|
|
29
|
-
"build": "rm -rf dist && bun build --target=bun --outfile=bin/
|
|
28
|
+
"build": "rm -rf dist && bun build --target=bun --outfile=bin/knowledge.js --minify --external @aws-sdk/client-s3 --external @aws-sdk/credential-providers --external ai --external @ai-sdk/openai --external @ai-sdk/anthropic --external @ai-sdk/deepseek src/cli.ts && bun build --target=bun --outfile=bin/knowledge-mcp.js --external @modelcontextprotocol/sdk --external @aws-sdk/client-s3 --external @aws-sdk/credential-providers --external ai --external @ai-sdk/openai --external @ai-sdk/anthropic --external @ai-sdk/deepseek src/mcp.js && bun build ./src/index.ts --outdir ./dist --target bun --external @aws-sdk/client-s3 --external @aws-sdk/credential-providers --external ai --external @ai-sdk/openai --external @ai-sdk/anthropic --external @ai-sdk/deepseek && bunx tsc -p tsconfig.build.json",
|
|
30
29
|
"prepublishOnly": "bun run build"
|
|
31
30
|
},
|
|
32
31
|
"keywords": [
|