@domai/architectural-intelligence (英语)
失败. 此包被堕. 建筑情报 层正在原地执行
donmai二进制,以及 此 TypeScript 软件包没有实时运行时间消费者 。 保留下来(不是 由于下游npm的消费者可能会把它钉上 今后将取消该课程. 新工作应针对当地人donmai arch表面.
系统层面综合图案,公约,决定,并跨代码库漂移.
部分 东迈 工具链.
它会做什么
建筑智能观察一个代码库的进化,并综合了有关它的结构化知识:
- 模式 ——反复出现的结构形状(例如"所有路线输出a")
POST打电话的管理员requireOrgAccess" ) - 公约 ——所商定的规范(例如,“试验在源头旁边进行,作为
*.test.ts" ) - 决定 ——有记录的建筑选择(例如"Auth使用WorkOS,不是Auth0")
- 绕行 将密码库置于偏离自身模式/公约/决定的地方
- 漂流 跨越阈值并需要干预的量化偏离压力
包裹船:
| 能力 | 入境点 |
|---|---|
| 当地单租店 | SqliteArchitecturalIntelligence |
| 多租户商店(注入Postgres手柄) | PostgresArchitecturalIntelligence, (中文(简体) ), adapterFromPostgresJs |
| 观察管道 | runObservationPass, (中文(简体) ), attachPipelineSubscribers, (中文(简体) ), readDiffObservations |
| 综合提示(版本登记册) | promptRegistry, (中文(简体) ), currentPrompt, (中文(简体) ), versionedPrompt |
| Eval / A/B 测试带 | evaluatePrompt, (中文(简体) ), compareABPrompts |
| 漂流探测 | assessChange, (中文(简体) ), resolveDriftGatePolicy, (中文(简体) ), evaluateGate |
| 工作流程动词登记 | registerArchitectureVerbs, (中文(简体) ), ASSESS_CHANGE_VERB |
安装
pnpm add @donmai/architectural-intelligence
22号节点.
快开始
import {
SqliteArchitecturalIntelligence,
runObservationPass,
assessChange,
} from '@donmai/architectural-intelligence'
// 1. Open or create the per-tenant store
const store = new SqliteArchitecturalIntelligence({ dbPath: '.donmai/arch.db' })
// 2. Run an observation pass over the change set
const result = await runObservationPass({
store,
changeRef: { sha: 'abc123', baseSha: 'main', files: [/* PrDiff entries */] },
})
// 3. Gate on drift — block the merge / open a review issue when the threshold trips
const drift = await assessChange({ store, changeRef: result.changeRef })
if (drift.driftScore > drift.policy.maxDrift) {
// surface the deviations to the agent or human reviewer
}
工作流程动词集成
对通过工作流程引擎驱动Donmai的平台消费者,注册 assess-change 动词 :
import { registerArchitectureVerbs } from '@donmai/architectural-intelligence'
registerArchitectureVerbs(verbRegistry)
动词接受 changeRef 输入和输出 a assessment 输出(drift分数+标出偏差),下游工作流程节点可以上分.
多租户部署(Postgres + RLS)
PostgresArchitecturalIntelligence 为SaaS的部署设计,许多租户共用一个数据库。 它分两层实施租户隔离:
- 应用层. 每个读取包括
WHERE org_id = $orgId; 每张邮票org_id在排队. - 数据库层 (推荐). 当消费者应用已运出的 RLS DDL 时, SDK 会在运行的交易中将每个操作附加包装
SET LOCAL rensei.current_org_id = '<orgId>'因此,Postgres的行级安全政策 强制隔离作为防御深度.
联网交易
提供a transaction 运行在您的适配器。 参考文献 postgres -js 助手已经这样做了.. adapterFromPostgresJs(sql) 羽毛穿过 sql.begin(...) 和 JSONB 参数解框.
import postgres from 'postgres'
import { adapterFromPostgresJs, PostgresArchitecturalIntelligence } from '@donmai/architectural-intelligence'
const sql = postgres(process.env.DATABASE_URL!)
const arch = new PostgresArchitecturalIntelligence({
db: adapterFromPostgresJs(sql),
orgId: ctx.orgId,
projectId: ctx.projectId,
})
当适配器不曝光时 transaction,SDK又回到了平面查询——应用程序级范围界定仍然适用,但数据库级的RLS被跳过.
RLS DDL 示例
每个数据库一次应用此 DDL( 通过您所选择的迁移工具 ) 。 SDK不运行DDL本身.
-- Multi-tenant RLS for @donmai/architectural-intelligence
ALTER TABLE observations ENABLE ROW LEVEL SECURITY;
ALTER TABLE graph_nodes ENABLE ROW LEVEL SECURITY;
-- FORCE so the table owner is not exempt — a misconfigured connection
-- string can't accidentally bypass tenant isolation.
ALTER TABLE observations FORCE ROW LEVEL SECURITY;
ALTER TABLE graph_nodes FORCE ROW LEVEL SECURITY;
CREATE POLICY arch_intel_observations_tenant_isolation ON observations
USING (org_id = current_setting('rensei.current_org_id', true)::uuid)
WITH CHECK (org_id = current_setting('rensei.current_org_id', true)::uuid);
CREATE POLICY arch_intel_graph_nodes_tenant_isolation ON graph_nodes
USING (org_id = current_setting('rensei.current_org_id', true)::uuid)
WITH CHECK (org_id = current_setting('rensei.current_org_id', true)::uuid);
从软件包中导出此 DDL 的正文副本为 RLS_DDL_EXAMPLE gUC 名称导出为 RLS_ORG_ID_SETTING 这样消费者就可以不用打字就可以参考两者.
所需经费:
- 应用程序数据库的作用不得有
BYPASSRLS超级用户和BYPASSRLS角色忽略了政策;创造了一个最不优惠的应用角色. - 需要操作跨租户的行政管理/移民工具应使用一个单独的角色,配置为
BYPASSRLS并记录在您的运行簿中. SET LOCAL被使用(不是)SET因此GUC范围在COMMIT编号 :ROLLBACK并且不会从池中漏出到下一个检出连接.
状态
堕地. 没有现成的消费者遗迹——建筑智能
层正在移动到本地 donmai 二进制. 这个
软件包只为开放源码软件的连续性和下游针头而保留;预计没有
其他专题工作.
许可证
麻省理工学院——见 自由主义。 。 。 .