Files
Agent-System/internal/app/project_blackboard_port.go
T
weichen 016135d946 feat(intentflow): wire U9–U12 live adapters for multi-intent closeout
Connect LLM segment proposals into HandleTurn, replace U10–U12 dry-run stubs
with production owners (blackboard supplement, docgov claim/submit, workflow
run/resume) when flags are on, and update policy/sysadmin maturity metadata.
2026-09-23 15:26:46 +00:00

61 lines
1.6 KiB
Go

package app
import (
"context"
"strconv"
"chat-agent-system/internal/ctxmgr"
"github.com/jackc/pgx/v5"
"github.com/jackc/pgx/v5/pgxpool"
)
func projectBlackboardPort(pool *pgxpool.Pool, ctxMgr *ctxmgr.ContextManager) ProjectBlackboardPort {
return ProjectBlackboardPort{
CurrentVersion: func(ctx context.Context, projectID int64) (string, error) {
if pool != nil {
var version int64
err := pool.QueryRow(ctx, `
SELECT COALESCE(version, 0) FROM project_blackboards WHERE project_id = $1
`, projectID).Scan(&version)
if err == pgx.ErrNoRows {
return "0", nil
}
if err != nil {
return "", err
}
return strconv.FormatInt(version, 10), nil
}
return "0", nil
},
MergeFacts: func(ctx context.Context, projectID int64, facts map[string]string) (string, error) {
if ctxMgr == nil {
return "0", nil
}
before, _ := projectBlackboardPort(pool, ctxMgr).CurrentVersion(ctx, projectID)
if err := ctxMgr.UpdateProjectBlackboard(ctx, projectID, facts); err != nil {
return "", err
}
after, err := projectBlackboardPort(pool, ctxMgr).CurrentVersion(ctx, projectID)
if err != nil {
return before, nil
}
return after, nil
},
}
}
func projectNameLookup(pool *pgxpool.Pool) func(context.Context, int64) (string, error) {
return func(ctx context.Context, projectID int64) (string, error) {
if pool == nil || projectID <= 0 {
return "", nil
}
var name string
err := pool.QueryRow(ctx, `SELECT COALESCE(name, '') FROM projects WHERE id = $1`, projectID).Scan(&name)
if err == pgx.ErrNoRows {
return "", nil
}
return name, err
}
}