db as source of truth: wiki→seeds, archive old artifacts, knowledge ingestion
- Migrations 010 (content_hash) + 011 (search tsvector column) - new: internal/knowledge/seed.go — knowledge seed ingest engine - new: internal/httpapi/knowledge.go — SearchKnowledge + GetEntityKnowledge - wire knowledge ingest into oikos seed pipeline - convert all 36 wiki docs + 6 investigations + 12 runbooks → seeds/knowledge.yaml - archive: knowledge/wiki/→archive/, oikos/cards/→archive/, .hermes/plans/→archive/ - delete: 9 superseded Python kernel files, ledger/, mcp/build_host_files.py - remove empty knowledge/ directory tree
This commit is contained in:
@@ -14,6 +14,7 @@ import (
|
||||
"github.com/dtoro/oikos/internal/config"
|
||||
"github.com/dtoro/oikos/internal/db"
|
||||
"github.com/dtoro/oikos/internal/httpapi"
|
||||
"github.com/dtoro/oikos/internal/knowledge"
|
||||
"github.com/dtoro/oikos/internal/notifier"
|
||||
"github.com/dtoro/oikos/internal/observability"
|
||||
"github.com/dtoro/oikos/internal/scheduler"
|
||||
@@ -125,6 +126,7 @@ Roles:
|
||||
notifier Run the notification service (Phase 3)
|
||||
all Run all roles in one process (dev mode)
|
||||
secret Secret management (Phase 5)
|
||||
knowledge Convert wiki to knowledge seed (one-shot)
|
||||
version Print version info
|
||||
|
||||
Environment:
|
||||
@@ -230,6 +232,32 @@ func runSeed(ctx context.Context, cfg config.Config) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// Ingest knowledge seed (documents, investigations, runbooks)
|
||||
knContent, err := os.ReadFile(seedsDir + "/knowledge.yaml")
|
||||
if err != nil {
|
||||
if os.IsNotExist(err) {
|
||||
slog.Info("knowledge seed not found, skipping")
|
||||
} else {
|
||||
return fmt.Errorf("read knowledge seed: %w", err)
|
||||
}
|
||||
} else {
|
||||
err = pool.SeedIngest(ctx, "knowledge.yaml", knContent,
|
||||
func(ctx context.Context, tx pgx.Tx, data map[string]any) error {
|
||||
r, err := knowledge.Ingest(ctx, tx, data)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
slog.Info("knowledge ingested",
|
||||
"documents", r.Documents,
|
||||
"investigations", r.Investigations,
|
||||
"runbooks", r.Runbooks)
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
slog.Info("seed ingest complete")
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user