@mastra/code-sdk 1.9.0 → 1.10.0-alpha.1
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 +23 -0
- package/dist/agent-connections/tools.d.ts.map +1 -1
- package/dist/agent-connections/tools.js +5 -5
- package/dist/agent-connections/tools.js.map +1 -1
- package/dist/analytics.d.ts.map +1 -1
- package/dist/analytics.js +2 -3
- package/dist/analytics.js.map +1 -1
- package/dist/auth/account-rotation-processor.d.ts.map +1 -1
- package/dist/auth/account-rotation-processor.js +17 -10
- package/dist/auth/account-rotation-processor.js.map +1 -1
- package/dist/auth/providers/kimi-coding.d.ts.map +1 -1
- package/dist/auth/providers/kimi-coding.js +1 -2
- package/dist/auth/providers/kimi-coding.js.map +1 -1
- package/dist/auth/providers/openai-codex.d.ts +1 -1
- package/dist/auth/providers/openai-codex.d.ts.map +1 -1
- package/dist/auth/providers/openai-codex.js +7 -19
- package/dist/auth/providers/openai-codex.js.map +1 -1
- package/dist/auth/storage.js +3 -3
- package/dist/auth/storage.js.map +1 -1
- package/dist/experimental-agent.d.ts +11 -0
- package/dist/experimental-agent.d.ts.map +1 -0
- package/dist/experimental-agent.js +36 -0
- package/dist/experimental-agent.js.map +1 -0
- package/dist/goal-manager.d.ts.map +1 -1
- package/dist/goal-manager.js +3 -4
- package/dist/goal-manager.js.map +1 -1
- package/dist/headless/run-mc.d.ts.map +1 -1
- package/dist/headless/run-mc.js +1 -1
- package/dist/headless/run-mc.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -7
- package/dist/index.js.map +1 -1
- package/dist/knowledge-inspector.d.ts.map +1 -1
- package/dist/knowledge-inspector.js +1 -2
- package/dist/knowledge-inspector.js.map +1 -1
- package/dist/onboarding/settings.d.ts +9 -0
- package/dist/onboarding/settings.d.ts.map +1 -1
- package/dist/onboarding/settings.js +36 -4
- package/dist/onboarding/settings.js.map +1 -1
- package/dist/plugins/loader.d.ts.map +1 -1
- package/dist/plugins/loader.js +1 -2
- package/dist/plugins/loader.js.map +1 -1
- package/dist/process-memory-diagnostics.d.ts.map +1 -1
- package/dist/process-memory-diagnostics.js +1 -2
- package/dist/process-memory-diagnostics.js.map +1 -1
- package/dist/tools/workflows/ephemeral-memory.d.ts +21 -0
- package/dist/tools/workflows/ephemeral-memory.d.ts.map +1 -1
- package/dist/tools/workflows/ephemeral-memory.js +1 -2
- package/dist/tools/workflows/ephemeral-memory.js.map +1 -1
- package/dist/utils/signals-pubsub.d.ts.map +1 -1
- package/dist/utils/signals-pubsub.js +1 -2
- package/dist/utils/signals-pubsub.js.map +1 -1
- package/package.json +11 -11
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-inspector.js","names":["#knowledge","#session","#handles","#cursors","#invalidateIdnode","#binding","#scope","#consumeCursor","#recordSummary","#sampledRelationshipCounts","#assertStable","#mintCursor","#rankedNodeSnapshot","#readHandle","#assertVisible","#outgoingTargets","#incomingParents","#activityRecord","#fingerprint","#identityKey","#mintHandle","#outgoingNodeRecords","#incomingParentRecords","#pruneOpaqueEntries"],"sources":["../src/knowledge-inspector.ts"],"sourcesContent":["import { randomBytes } from 'node:crypto';\n\nimport type { Session } from '@mastra/core/agent-controller';\nimport { createKnowledgeNodeCursor, isKnowledgeScopeVisible, parseKnowledgeWikilinks } from '@mastra/core/storage';\nimport type {\n KnowledgeActivityEvent,\n KnowledgeRecord,\n KnowledgeNode,\n KnowledgeScope,\n KnowledgeStorage,\n MastraCompositeStore,\n} from '@mastra/core/storage';\n\nimport { resolveKnowledgeScopeIdentity } from './knowledge-scope.js';\nimport type { MastraCodeState } from './schema.js';\n\nexport type KnowledgeInspectorScopeLevel = 'org' | 'resource' | 'thread';\nexport type KnowledgeInspectorRecordType = 'node';\nexport type KnowledgeInspectorNodeSort = 'relevant' | 'recent' | 'connected';\n\nexport interface KnowledgeInspectorScopeRoot {\n level: KnowledgeInspectorScopeLevel;\n id?: string;\n available: boolean;\n reason?: string;\n}\n\nexport interface KnowledgeInspectorScopeTree {\n identityKey: string;\n defaultLevel: 'resource';\n roots: KnowledgeInspectorScopeRoot[];\n}\n\nexport interface KnowledgeInspectorScopeBadge {\n level: KnowledgeInspectorScopeLevel;\n id: string;\n}\n\nexport interface KnowledgeInspectorRelationshipCounts {\n records: number;\n outgoing: number;\n incoming: number;\n sampled: boolean;\n}\n\nexport interface KnowledgeInspectorNodeSummary {\n handle: string;\n type: KnowledgeInspectorRecordType;\n name: string;\n kind?: string;\n scope: KnowledgeInspectorScopeBadge;\n version: number;\n updatedAt: string;\n relationshipCounts?: KnowledgeInspectorRelationshipCounts;\n}\n\nexport interface KnowledgeInspectorRecordSummary {\n text: string;\n scope: KnowledgeInspectorScopeBadge;\n sourceThreadId: string;\n capturedAt: string;\n when?: string;\n}\n\nexport interface KnowledgeInspectorNodeList {\n identityKey: string;\n scopeLevel: KnowledgeInspectorScopeLevel;\n nodes: KnowledgeInspectorNodeSummary[];\n nextCursor?: string;\n sort?: KnowledgeInspectorNodeSort;\n coverage?: 'exact' | 'recent-window';\n}\n\nexport interface KnowledgeInspectorRelationshipPreview {\n nodes: KnowledgeInspectorNodeSummary[];\n partial: boolean;\n}\n\nexport interface KnowledgeInspectorNodeDetail {\n identityKey: string;\n scopeLevel: KnowledgeInspectorScopeLevel;\n node: KnowledgeInspectorNodeSummary;\n records: KnowledgeInspectorRecordSummary[];\n recordsNextCursor?: string;\n mentioningRecords: KnowledgeInspectorRecordSummary[];\n mentioningRecordsNextCursor?: string;\n outgoingTargets: KnowledgeInspectorRelationshipPreview;\n incomingParents: KnowledgeInspectorRelationshipPreview;\n relationshipCounts: KnowledgeInspectorRelationshipCounts;\n content?: string;\n contentTruncated: boolean;\n links: Array<{ label: string; node?: KnowledgeInspectorNodeSummary }>;\n}\n\nexport interface KnowledgeInspectorActivityEvent {\n action: KnowledgeActivityEvent['action'];\n recordType: KnowledgeActivityEvent['recordType'];\n scope: KnowledgeInspectorScopeBadge;\n sourceThreadId?: string;\n createdAt: string;\n record?: KnowledgeInspectorNodeSummary;\n}\n\nexport interface KnowledgeInspectorActivityList {\n identityKey: string;\n scopeLevel: KnowledgeInspectorScopeLevel;\n events: KnowledgeInspectorActivityEvent[];\n nextCursor?: string;\n}\n\nexport interface KnowledgeInspector {\n getScopeTree(): Promise<KnowledgeInspectorScopeTree>;\n listNodes(input: {\n level: KnowledgeInspectorScopeLevel;\n namePrefix?: string;\n kind?: string;\n sort?: KnowledgeInspectorNodeSort;\n cursor?: string;\n limit?: number;\n }): Promise<KnowledgeInspectorNodeList>;\n getNode(input: {\n handle: string;\n recordsCursor?: string;\n mentioningRecordsCursor?: string;\n recordLimit?: number;\n }): Promise<KnowledgeInspectorNodeDetail>;\n listActivity(input: {\n level: KnowledgeInspectorScopeLevel;\n cursor?: string;\n limit?: number;\n }): Promise<KnowledgeInspectorActivityList>;\n}\n\nexport class KnowledgeInspectorError extends Error {\n constructor(\n readonly code: 'unavailable' | 'invalid-handle' | 'stale-handle' | 'invalid-cursor' | 'not-visible',\n message: string,\n ) {\n super(message);\n this.name = 'KnowledgeInspectorError';\n }\n}\n\ninterface Binding {\n /** Org rung shared with the subconscious writers (see knowledge-scope.ts). */\n organizationId: string;\n /** Resource rung of the knowledge scope: the Factory project id, else the session resource. */\n resourceId: string;\n threadId?: string;\n fingerprint: string;\n identityKey: string;\n}\n\ninterface HandleEntry {\n identityKey: string;\n level: KnowledgeInspectorScopeLevel;\n type: KnowledgeInspectorRecordType;\n recordId: string;\n expiresAt: number;\n}\n\ninterface CursorEntry {\n identityKey: string;\n level: KnowledgeInspectorScopeLevel;\n kind: 'node' | 'ranked-node' | 'records' | 'mentioning-records' | 'activity';\n value: string;\n filters?: { namePrefix?: string; kind?: string; sort?: KnowledgeInspectorNodeSort };\n expiresAt: number;\n}\n\ninterface RankedNodeSnapshot {\n offset: number;\n entries: { id: string; degree: number; counts: KnowledgeInspectorRelationshipCounts }[];\n}\n\ninterface RelationshipRecords {\n nodes: KnowledgeNode[];\n truncated: boolean;\n}\n\nconst HANDLE_TTL_MS = 5 * 60_000;\nconst MAX_OPAQUE_ENTRIES = 1_000;\nconst DEFAULT_RECORD_LIMIT = 50;\nconst MAX_RECORD_LIMIT = 50;\nconst DEFAULT_FACT_LIMIT = 25;\nconst MAX_FACT_LIMIT = 100;\nconst DEFAULT_ACTIVITY_LIMIT = 20;\nconst MAX_ACTIVITY_LIMIT = 100;\nconst MAX_RELATED_RECORDS = 25;\nconst MAX_RANK_CANDIDATES = 50;\nconst MAX_RANK_FACTS = 100;\nconst RRF_K = 60;\nconst MAX_NODE_CONTENT_BYTES = 32 * 1024;\n\nfunction opaqueToken(): string {\n return randomBytes(24).toString('base64url');\n}\n\nfunction boundedLimit(value: number | undefined, fallback: number, maximum: number): number {\n if (value === undefined) return fallback;\n if (!Number.isInteger(value) || value < 1) return fallback;\n return Math.min(value, maximum);\n}\n\nfunction scopeBadge(scope: KnowledgeScope): KnowledgeInspectorScopeBadge {\n const entry = scope.at(-1);\n if (!entry) throw new KnowledgeInspectorError('unavailable', 'Knowledge record has no scope.');\n const separator = entry.indexOf(':');\n return {\n level: entry.slice(0, separator) as KnowledgeInspectorScopeLevel,\n id: entry.slice(separator + 1),\n };\n}\n\nfunction knowledgeSummary(record: KnowledgeRecord): KnowledgeInspectorRecordSummary {\n return {\n text: record.text,\n scope: scopeBadge(record.scope),\n sourceThreadId: record.sourceThreadId,\n capturedAt: record.capturedAt.toISOString(),\n when: record.when?.toISOString(),\n };\n}\n\nfunction truncateUtf8(value: string, maxBytes: number): { value: string; truncated: boolean } {\n const encoded = Buffer.from(value);\n if (encoded.byteLength <= maxBytes) return { value, truncated: false };\n let end = maxBytes;\n let truncated = encoded.subarray(0, end).toString('utf8');\n while (Buffer.byteLength(truncated) > maxBytes) {\n truncated = encoded.subarray(0, --end).toString('utf8');\n }\n return { value: truncated, truncated: true };\n}\n\nclass ScopedKnowledgeInspector implements KnowledgeInspector {\n readonly #knowledge: KnowledgeStorage;\n readonly #session: Session<MastraCodeState>;\n readonly #handles = new Map<string, HandleEntry>();\n readonly #cursors = new Map<string, CursorEntry>();\n #fingerprint?: string;\n #identityKey = opaqueToken();\n\n constructor(input: { knowledge: KnowledgeStorage; session: Session<MastraCodeState> }) {\n this.#knowledge = input.knowledge;\n this.#session = input.session;\n this.#session.subscribe(event => {\n if (event.type === 'thread_changed' || event.type === 'thread_created' || event.type === 'thread_deleted') {\n this.#invalidateIdnode();\n }\n });\n }\n\n async getScopeTree(): Promise<KnowledgeInspectorScopeTree> {\n const binding = await this.#binding();\n return {\n identityKey: binding.identityKey,\n defaultLevel: 'resource',\n roots: [\n { level: 'org', id: binding.organizationId, available: true },\n { level: 'resource', id: binding.resourceId, available: true },\n binding.threadId\n ? { level: 'thread', id: binding.threadId, available: true }\n : { level: 'thread', available: false, reason: 'No active thread belongs to this project.' },\n ],\n };\n }\n\n async listNodes(input: {\n level: KnowledgeInspectorScopeLevel;\n namePrefix?: string;\n kind?: string;\n sort?: KnowledgeInspectorNodeSort;\n cursor?: string;\n limit?: number;\n }): Promise<KnowledgeInspectorNodeList> {\n const binding = await this.#binding();\n const scope = this.#scope(binding, input.level);\n const limit = boundedLimit(input.limit, DEFAULT_RECORD_LIMIT, MAX_RECORD_LIMIT);\n const sort = input.sort ?? 'relevant';\n if (sort === 'recent') {\n const cursor = this.#consumeCursor(input.cursor, binding, input.level, 'node', {\n namePrefix: input.namePrefix,\n kind: input.kind,\n sort,\n });\n const records = await this.#knowledge.listNodes({\n scope,\n namePrefix: input.namePrefix,\n kind: input.kind,\n cursor,\n limit,\n });\n const nodes: KnowledgeInspectorNodeSummary[] = await Promise.all(\n records.map(async record => ({\n ...this.#recordSummary(record, binding, input.level),\n relationshipCounts: (await this.#sampledRelationshipCounts(record, scope)).counts,\n })),\n );\n await this.#assertStable(binding);\n return {\n identityKey: binding.identityKey,\n scopeLevel: input.level,\n nodes,\n nextCursor:\n records.length === limit\n ? this.#mintCursor(\n binding,\n input.level,\n 'node',\n createKnowledgeNodeCursor(records.at(-1)!, {\n namePrefix: input.namePrefix,\n kind: input.kind,\n }),\n {\n namePrefix: input.namePrefix,\n kind: input.kind,\n sort,\n },\n )\n : undefined,\n sort,\n coverage: 'exact',\n };\n }\n\n const filters = { namePrefix: input.namePrefix, kind: input.kind, sort };\n const encodedSnapshot = this.#consumeCursor(input.cursor, binding, input.level, 'ranked-node', filters);\n const snapshot = encodedSnapshot\n ? (JSON.parse(encodedSnapshot) as RankedNodeSnapshot)\n : await this.#rankedNodeSnapshot(scope, input.namePrefix, input.kind, sort);\n const page = snapshot.entries.slice(snapshot.offset, snapshot.offset + limit);\n const nodes: KnowledgeInspectorNodeSummary[] = [];\n for (const entry of page) {\n const node = await this.#knowledge.getNode(entry.id);\n if (!node || !isKnowledgeScopeVisible(node.scope, scope)) continue;\n nodes.push({ ...this.#recordSummary(node, binding, input.level), relationshipCounts: entry.counts });\n }\n const nextOffset = snapshot.offset + limit;\n await this.#assertStable(binding);\n return {\n identityKey: binding.identityKey,\n scopeLevel: input.level,\n nodes,\n nextCursor:\n nextOffset < snapshot.entries.length\n ? this.#mintCursor(\n binding,\n input.level,\n 'ranked-node',\n JSON.stringify({ ...snapshot, offset: nextOffset } satisfies RankedNodeSnapshot),\n filters,\n )\n : undefined,\n sort,\n coverage: 'recent-window',\n };\n }\n\n async getNode(input: {\n handle: string;\n recordsCursor?: string;\n mentioningRecordsCursor?: string;\n recordLimit?: number;\n }): Promise<KnowledgeInspectorNodeDetail> {\n const binding = await this.#binding();\n const handle = this.#readHandle(input.handle, binding, 'node');\n const scope = this.#scope(binding, handle.level);\n const node = await this.#knowledge.getNode(handle.recordId);\n this.#assertVisible(node, scope);\n const limit = boundedLimit(input.recordLimit, DEFAULT_FACT_LIMIT, MAX_FACT_LIMIT);\n const recordsAfter = this.#consumeCursor(input.recordsCursor, binding, handle.level, 'records');\n const mentioningAfter = this.#consumeCursor(\n input.mentioningRecordsCursor,\n binding,\n handle.level,\n 'mentioning-records',\n );\n const [recordsResult, mentioningResult] = await Promise.all([\n this.#knowledge.listKnowledgeAbout({ node: node.id, scope, after: recordsAfter, limit }),\n this.#knowledge.listKnowledgeMentioning({ node: node.id, scope, after: mentioningAfter, limit }),\n ]);\n const mentioningRecords = mentioningResult.records.filter(record => record.node !== node.id);\n const content = truncateUtf8(node.content ?? '', MAX_NODE_CONTENT_BYTES);\n const [outgoingTargets, incomingParents, relationship] = await Promise.all([\n this.#outgoingTargets(node, recordsResult.records, scope, binding, handle.level),\n this.#incomingParents(node, mentioningRecords, scope, binding, handle.level),\n this.#sampledRelationshipCounts(node, scope),\n ]);\n const links = await Promise.all(\n parseKnowledgeWikilinks(content.value)\n .slice(0, MAX_RELATED_RECORDS)\n .map(async label => {\n const target = await this.#knowledge.resolveNode({ name: label, scope });\n return {\n label,\n node: target ? this.#recordSummary(target, binding, handle.level) : undefined,\n };\n }),\n );\n await this.#assertStable(binding);\n return {\n identityKey: binding.identityKey,\n scopeLevel: handle.level,\n node: { ...this.#recordSummary(node, binding, handle.level), relationshipCounts: relationship.counts },\n records: recordsResult.records.map(knowledgeSummary),\n recordsNextCursor: recordsResult.nextCursor\n ? this.#mintCursor(binding, handle.level, 'records', recordsResult.nextCursor)\n : undefined,\n mentioningRecords: mentioningRecords.map(knowledgeSummary),\n mentioningRecordsNextCursor: mentioningResult.nextCursor\n ? this.#mintCursor(binding, handle.level, 'mentioning-records', mentioningResult.nextCursor)\n : undefined,\n outgoingTargets: {\n nodes: outgoingTargets.nodes,\n partial: outgoingTargets.partial || Boolean(recordsResult.nextCursor),\n },\n incomingParents: {\n nodes: incomingParents.nodes,\n partial: incomingParents.partial || Boolean(mentioningResult.nextCursor),\n },\n relationshipCounts: relationship.counts,\n content: node.content === undefined ? undefined : content.value,\n contentTruncated: content.truncated,\n links,\n };\n }\n\n async listActivity(input: {\n level: KnowledgeInspectorScopeLevel;\n cursor?: string;\n limit?: number;\n }): Promise<KnowledgeInspectorActivityList> {\n const binding = await this.#binding();\n const scope = this.#scope(binding, input.level);\n const limit = boundedLimit(input.limit, DEFAULT_ACTIVITY_LIMIT, MAX_ACTIVITY_LIMIT);\n const after = this.#consumeCursor(input.cursor, binding, input.level, 'activity');\n const events = await this.#knowledge.listActivity({ scope, after, limit });\n const activityEvents: KnowledgeInspectorActivityEvent[] = [];\n for (const event of events) {\n const record = await this.#activityRecord(event, scope, binding, input.level);\n activityEvents.push({\n action: event.action,\n recordType: event.recordType,\n scope: scopeBadge(event.scope),\n sourceThreadId: record ? event.sourceThreadId : undefined,\n createdAt: event.createdAt.toISOString(),\n record,\n });\n }\n await this.#assertStable(binding);\n return {\n identityKey: binding.identityKey,\n scopeLevel: input.level,\n events: activityEvents,\n nextCursor:\n events.length === limit ? this.#mintCursor(binding, input.level, 'activity', events.at(-1)!.id) : undefined,\n };\n }\n\n async #binding(): Promise<Binding> {\n // Scope rungs come from the same resolver the subconscious writes under; an\n // owner id is a USER id and never names a knowledge org.\n const identity = resolveKnowledgeScopeIdentity(this.#session.state.get());\n const sessionResourceId = this.#session.identity.getResourceId();\n if (!identity.resolved) {\n // An unresolved org is its own identity: handles minted under the\n // previous scope must not survive into whatever resolves next.\n this.#invalidateIdnode();\n throw new KnowledgeInspectorError(\n 'unavailable',\n identity.reason\n ? `Knowledge inspection unavailable: ${identity.reason}`\n : 'Knowledge inspection requires a resolved organization for this session.',\n );\n }\n if (!sessionResourceId) {\n throw new KnowledgeInspectorError('unavailable', 'Knowledge inspection requires an active project.');\n }\n const organizationId = identity.organizationId;\n const resourceId = identity.knowledgeResourceId ?? sessionResourceId;\n const activeThreadId = this.#session.thread.getId() ?? undefined;\n const thread = activeThreadId ? await this.#session.thread.getById({ threadId: activeThreadId }) : null;\n const threadId = thread?.resourceId === sessionResourceId ? thread.id : undefined;\n const fingerprint = `${organizationId}\\0${resourceId}\\0${threadId ?? ''}`;\n if (this.#fingerprint !== fingerprint) {\n this.#fingerprint = fingerprint;\n this.#identityKey = opaqueToken();\n this.#handles.clear();\n this.#cursors.clear();\n }\n return { organizationId, resourceId, threadId, fingerprint, identityKey: this.#identityKey };\n }\n\n #scope(binding: Binding, level: KnowledgeInspectorScopeLevel): KnowledgeScope {\n if (level === 'org') return [`org:${binding.organizationId}`];\n const scope = [`org:${binding.organizationId}`, `resource:${binding.resourceId}`];\n if (level === 'resource') return scope;\n if (!binding.threadId) {\n throw new KnowledgeInspectorError('unavailable', 'The active thread does not belong to this project.');\n }\n return [...scope, `thread:${binding.threadId}`];\n }\n\n async #assertStable(binding: Binding): Promise<void> {\n const current = await this.#binding();\n if (current.identityKey !== binding.identityKey || current.fingerprint !== binding.fingerprint) {\n throw new KnowledgeInspectorError('stale-handle', 'Knowledge scope changed while the request was running.');\n }\n }\n\n #assertVisible<T extends KnowledgeNode>(record: T | null, scope: KnowledgeScope): asserts record is T {\n if (!record || !isKnowledgeScopeVisible(record.scope, scope)) {\n throw new KnowledgeInspectorError('not-visible', 'Knowledge record is not visible in the selected scope.');\n }\n }\n\n #recordSummary(\n record: KnowledgeNode,\n binding: Binding,\n level: KnowledgeInspectorScopeLevel,\n ): KnowledgeInspectorNodeSummary {\n const type: KnowledgeInspectorRecordType = 'node';\n return {\n handle: this.#mintHandle(binding, level, type, record.id),\n type,\n name: record.name,\n kind: record.kind,\n scope: scopeBadge(record.scope),\n version: record.version,\n updatedAt: record.updatedAt.toISOString(),\n };\n }\n\n async #rankedNodeSnapshot(\n scope: KnowledgeScope,\n namePrefix: string | undefined,\n kind: string | undefined,\n sort: Exclude<KnowledgeInspectorNodeSort, 'recent'>,\n ): Promise<RankedNodeSnapshot> {\n const records = await this.#knowledge.listNodes({\n scope,\n namePrefix,\n kind,\n limit: MAX_RANK_CANDIDATES,\n });\n const ranked = await Promise.all(\n records.map(async (node, recencyRank) => ({\n node,\n recencyRank,\n ...(await this.#sampledRelationshipCounts(node, scope)),\n })),\n );\n const connected = [...ranked].sort(\n (a, b) => b.degree - a.degree || a.recencyRank - b.recencyRank || a.node.id.localeCompare(b.node.id),\n );\n const connectedRank = new Map(connected.map((entry, index) => [entry.node.id, index]));\n const ordered =\n sort === 'connected'\n ? connected\n : [...ranked].sort((a, b) => {\n const aScore = 1 / (RRF_K + a.recencyRank + 1) + 1 / (RRF_K + connectedRank.get(a.node.id)! + 1);\n const bScore = 1 / (RRF_K + b.recencyRank + 1) + 1 / (RRF_K + connectedRank.get(b.node.id)! + 1);\n return bScore - aScore || a.recencyRank - b.recencyRank || a.node.id.localeCompare(b.node.id);\n });\n return {\n offset: 0,\n entries: ordered.map(entry => ({ id: entry.node.id, degree: entry.degree, counts: entry.counts })),\n };\n }\n\n async #sampledRelationshipCounts(\n node: KnowledgeNode,\n scope: KnowledgeScope,\n ): Promise<{ degree: number; counts: KnowledgeInspectorRelationshipCounts }> {\n const [aboutResult, mentioningResult] = await Promise.all([\n this.#knowledge.listKnowledgeAbout({ node: node.id, scope, limit: MAX_RANK_FACTS }),\n this.#knowledge.listKnowledgeMentioning({ node: node.id, scope, limit: MAX_RANK_FACTS }),\n ]);\n const [outgoing, incoming] = await Promise.all([\n this.#outgoingNodeRecords(node, aboutResult.records, scope),\n this.#incomingParentRecords(node, mentioningResult.records, scope),\n ]);\n const mentioningRecords = mentioningResult.records.filter(record => record.node !== node.id);\n const degree = new Set([...outgoing.nodes, ...incoming.nodes].map(record => record.id)).size;\n return {\n degree,\n counts: {\n records: aboutResult.records.length + mentioningRecords.length,\n outgoing: outgoing.nodes.length,\n incoming: incoming.nodes.length,\n sampled: Boolean(\n aboutResult.nextCursor || mentioningResult.nextCursor || outgoing.truncated || incoming.truncated,\n ),\n },\n };\n }\n\n async #outgoingNodeRecords(\n current: KnowledgeNode,\n records: KnowledgeRecord[],\n scope: KnowledgeScope,\n ): Promise<RelationshipRecords> {\n const related = new Map<string, KnowledgeNode>();\n let truncated = false;\n const sources = [current.content ?? '', ...records.map(record => record.text)];\n for (const source of sources) {\n for (const name of parseKnowledgeWikilinks(source)) {\n if (related.size >= MAX_RELATED_RECORDS) {\n truncated = true;\n break;\n }\n const node = await this.#knowledge.resolveNode({ name, scope });\n if (node && node.id !== current.id && isKnowledgeScopeVisible(node.scope, scope)) {\n related.set(node.id, node);\n }\n }\n if (truncated) break;\n }\n return { nodes: [...related.values()], truncated };\n }\n\n async #incomingParentRecords(\n current: KnowledgeNode,\n records: KnowledgeRecord[],\n scope: KnowledgeScope,\n ): Promise<RelationshipRecords> {\n const related = new Map<string, KnowledgeNode>();\n let truncated = false;\n for (const record of records) {\n if (record.node === current.id || related.has(record.node)) continue;\n if (related.size >= MAX_RELATED_RECORDS) {\n truncated = true;\n break;\n }\n const node = await this.#knowledge.getNode(record.node);\n if (node && isKnowledgeScopeVisible(node.scope, scope)) related.set(node.id, node);\n }\n return { nodes: [...related.values()], truncated };\n }\n\n async #outgoingTargets(\n current: KnowledgeNode,\n records: KnowledgeRecord[],\n scope: KnowledgeScope,\n binding: Binding,\n level: KnowledgeInspectorScopeLevel,\n ): Promise<KnowledgeInspectorRelationshipPreview> {\n const related = await this.#outgoingNodeRecords(current, records, scope);\n return {\n nodes: related.nodes.map(node => this.#recordSummary(node, binding, level)),\n partial: related.truncated,\n };\n }\n\n async #incomingParents(\n current: KnowledgeNode,\n records: KnowledgeRecord[],\n scope: KnowledgeScope,\n binding: Binding,\n level: KnowledgeInspectorScopeLevel,\n ): Promise<KnowledgeInspectorRelationshipPreview> {\n const related = await this.#incomingParentRecords(current, records, scope);\n return {\n nodes: related.nodes.map(node => this.#recordSummary(node, binding, level)),\n partial: related.truncated,\n };\n }\n\n async #activityRecord(\n event: KnowledgeActivityEvent,\n scope: KnowledgeScope,\n binding: Binding,\n level: KnowledgeInspectorScopeLevel,\n ): Promise<KnowledgeInspectorNodeSummary | undefined> {\n if (event.recordType === 'node') {\n const node = await this.#knowledge.getNode(event.recordId);\n return node && isKnowledgeScopeVisible(node.scope, scope) ? this.#recordSummary(node, binding, level) : undefined;\n }\n const record = await this.#knowledge.getKnowledge({ id: event.recordId, includeDeleted: true });\n if (!record || !isKnowledgeScopeVisible(record.scope, scope)) return undefined;\n const node = await this.#knowledge.getNode(record.node);\n return node && isKnowledgeScopeVisible(node.scope, scope) ? this.#recordSummary(node, binding, level) : undefined;\n }\n\n #mintHandle(\n binding: Binding,\n level: KnowledgeInspectorScopeLevel,\n type: KnowledgeInspectorRecordType,\n recordId: string,\n ): string {\n this.#pruneOpaqueEntries();\n const token = opaqueToken();\n this.#handles.set(token, {\n identityKey: binding.identityKey,\n level,\n type,\n recordId,\n expiresAt: Date.now() + HANDLE_TTL_MS,\n });\n return token;\n }\n\n #readHandle(handle: string, binding: Binding, expectedType: KnowledgeInspectorRecordType): HandleEntry {\n const entry = this.#handles.get(handle);\n if (!entry || entry.expiresAt < Date.now() || entry.type !== expectedType) {\n throw new KnowledgeInspectorError('invalid-handle', 'Knowledge record handle is invalid or expired.');\n }\n if (entry.identityKey !== binding.identityKey) {\n throw new KnowledgeInspectorError('stale-handle', 'Knowledge record handle belongs to a previous scope.');\n }\n return entry;\n }\n\n #mintCursor(\n binding: Binding,\n level: KnowledgeInspectorScopeLevel,\n kind: CursorEntry['kind'],\n value: string,\n filters?: CursorEntry['filters'],\n ): string {\n this.#pruneOpaqueEntries();\n const token = opaqueToken();\n this.#cursors.set(token, {\n identityKey: binding.identityKey,\n level,\n kind,\n value,\n filters,\n expiresAt: Date.now() + HANDLE_TTL_MS,\n });\n return token;\n }\n\n #consumeCursor(\n cursor: string | undefined,\n binding: Binding,\n level: KnowledgeInspectorScopeLevel,\n kind: CursorEntry['kind'],\n filters?: CursorEntry['filters'],\n ): string | undefined {\n if (!cursor) return undefined;\n const entry = this.#cursors.get(cursor);\n if (\n !entry ||\n entry.expiresAt < Date.now() ||\n entry.identityKey !== binding.identityKey ||\n entry.level !== level ||\n entry.kind !== kind ||\n entry.filters?.namePrefix !== filters?.namePrefix ||\n entry.filters?.kind !== filters?.kind ||\n entry.filters?.sort !== filters?.sort\n ) {\n throw new KnowledgeInspectorError(\n 'invalid-cursor',\n 'Knowledge cursor does not match the active scope and filters.',\n );\n }\n return entry.value;\n }\n\n #pruneOpaqueEntries(): void {\n const now = Date.now();\n for (const [token, entry] of this.#handles) {\n if (entry.expiresAt < now) this.#handles.delete(token);\n }\n for (const [token, entry] of this.#cursors) {\n if (entry.expiresAt < now) this.#cursors.delete(token);\n }\n while (this.#handles.size + this.#cursors.size >= MAX_OPAQUE_ENTRIES) {\n const handle = this.#handles.keys().next().value;\n if (handle) this.#handles.delete(handle);\n else {\n const cursor = this.#cursors.keys().next().value;\n if (cursor) this.#cursors.delete(cursor);\n else break;\n }\n }\n }\n\n #invalidateIdnode(): void {\n this.#fingerprint = undefined;\n this.#identityKey = opaqueToken();\n this.#handles.clear();\n this.#cursors.clear();\n }\n}\n\nexport async function createKnowledgeInspector(input: {\n storage: MastraCompositeStore;\n session: Session<MastraCodeState>;\n}): Promise<KnowledgeInspector | undefined> {\n const knowledge = await input.storage.getStore('knowledge');\n return knowledge ? new ScopedKnowledgeInspector({ knowledge, session: input.session }) : undefined;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"knowledge-inspector.js","names":["#knowledge","#session","#handles","#cursors","#invalidateIdnode","#binding","#scope","#consumeCursor","#recordSummary","#sampledRelationshipCounts","#assertStable","#mintCursor","#rankedNodeSnapshot","#readHandle","#assertVisible","#outgoingTargets","#incomingParents","#activityRecord","#fingerprint","#identityKey","#mintHandle","#outgoingNodeRecords","#incomingParentRecords","#pruneOpaqueEntries"],"sources":["../src/knowledge-inspector.ts"],"sourcesContent":["import type { Session } from '@mastra/core/agent-controller';\nimport { createKnowledgeNodeCursor, isKnowledgeScopeVisible, parseKnowledgeWikilinks } from '@mastra/core/storage';\nimport type {\n KnowledgeActivityEvent,\n KnowledgeRecord,\n KnowledgeNode,\n KnowledgeScope,\n KnowledgeStorage,\n MastraCompositeStore,\n} from '@mastra/core/storage';\n\nimport { resolveKnowledgeScopeIdentity } from './knowledge-scope.js';\nimport type { MastraCodeState } from './schema.js';\n\nexport type KnowledgeInspectorScopeLevel = 'org' | 'resource' | 'thread';\nexport type KnowledgeInspectorRecordType = 'node';\nexport type KnowledgeInspectorNodeSort = 'relevant' | 'recent' | 'connected';\n\nexport interface KnowledgeInspectorScopeRoot {\n level: KnowledgeInspectorScopeLevel;\n id?: string;\n available: boolean;\n reason?: string;\n}\n\nexport interface KnowledgeInspectorScopeTree {\n identityKey: string;\n defaultLevel: 'resource';\n roots: KnowledgeInspectorScopeRoot[];\n}\n\nexport interface KnowledgeInspectorScopeBadge {\n level: KnowledgeInspectorScopeLevel;\n id: string;\n}\n\nexport interface KnowledgeInspectorRelationshipCounts {\n records: number;\n outgoing: number;\n incoming: number;\n sampled: boolean;\n}\n\nexport interface KnowledgeInspectorNodeSummary {\n handle: string;\n type: KnowledgeInspectorRecordType;\n name: string;\n kind?: string;\n scope: KnowledgeInspectorScopeBadge;\n version: number;\n updatedAt: string;\n relationshipCounts?: KnowledgeInspectorRelationshipCounts;\n}\n\nexport interface KnowledgeInspectorRecordSummary {\n text: string;\n scope: KnowledgeInspectorScopeBadge;\n sourceThreadId: string;\n capturedAt: string;\n when?: string;\n}\n\nexport interface KnowledgeInspectorNodeList {\n identityKey: string;\n scopeLevel: KnowledgeInspectorScopeLevel;\n nodes: KnowledgeInspectorNodeSummary[];\n nextCursor?: string;\n sort?: KnowledgeInspectorNodeSort;\n coverage?: 'exact' | 'recent-window';\n}\n\nexport interface KnowledgeInspectorRelationshipPreview {\n nodes: KnowledgeInspectorNodeSummary[];\n partial: boolean;\n}\n\nexport interface KnowledgeInspectorNodeDetail {\n identityKey: string;\n scopeLevel: KnowledgeInspectorScopeLevel;\n node: KnowledgeInspectorNodeSummary;\n records: KnowledgeInspectorRecordSummary[];\n recordsNextCursor?: string;\n mentioningRecords: KnowledgeInspectorRecordSummary[];\n mentioningRecordsNextCursor?: string;\n outgoingTargets: KnowledgeInspectorRelationshipPreview;\n incomingParents: KnowledgeInspectorRelationshipPreview;\n relationshipCounts: KnowledgeInspectorRelationshipCounts;\n content?: string;\n contentTruncated: boolean;\n links: Array<{ label: string; node?: KnowledgeInspectorNodeSummary }>;\n}\n\nexport interface KnowledgeInspectorActivityEvent {\n action: KnowledgeActivityEvent['action'];\n recordType: KnowledgeActivityEvent['recordType'];\n scope: KnowledgeInspectorScopeBadge;\n sourceThreadId?: string;\n createdAt: string;\n record?: KnowledgeInspectorNodeSummary;\n}\n\nexport interface KnowledgeInspectorActivityList {\n identityKey: string;\n scopeLevel: KnowledgeInspectorScopeLevel;\n events: KnowledgeInspectorActivityEvent[];\n nextCursor?: string;\n}\n\nexport interface KnowledgeInspector {\n getScopeTree(): Promise<KnowledgeInspectorScopeTree>;\n listNodes(input: {\n level: KnowledgeInspectorScopeLevel;\n namePrefix?: string;\n kind?: string;\n sort?: KnowledgeInspectorNodeSort;\n cursor?: string;\n limit?: number;\n }): Promise<KnowledgeInspectorNodeList>;\n getNode(input: {\n handle: string;\n recordsCursor?: string;\n mentioningRecordsCursor?: string;\n recordLimit?: number;\n }): Promise<KnowledgeInspectorNodeDetail>;\n listActivity(input: {\n level: KnowledgeInspectorScopeLevel;\n cursor?: string;\n limit?: number;\n }): Promise<KnowledgeInspectorActivityList>;\n}\n\nexport class KnowledgeInspectorError extends Error {\n constructor(\n readonly code: 'unavailable' | 'invalid-handle' | 'stale-handle' | 'invalid-cursor' | 'not-visible',\n message: string,\n ) {\n super(message);\n this.name = 'KnowledgeInspectorError';\n }\n}\n\ninterface Binding {\n /** Org rung shared with the subconscious writers (see knowledge-scope.ts). */\n organizationId: string;\n /** Resource rung of the knowledge scope: the Factory project id, else the session resource. */\n resourceId: string;\n threadId?: string;\n fingerprint: string;\n identityKey: string;\n}\n\ninterface HandleEntry {\n identityKey: string;\n level: KnowledgeInspectorScopeLevel;\n type: KnowledgeInspectorRecordType;\n recordId: string;\n expiresAt: number;\n}\n\ninterface CursorEntry {\n identityKey: string;\n level: KnowledgeInspectorScopeLevel;\n kind: 'node' | 'ranked-node' | 'records' | 'mentioning-records' | 'activity';\n value: string;\n filters?: { namePrefix?: string; kind?: string; sort?: KnowledgeInspectorNodeSort };\n expiresAt: number;\n}\n\ninterface RankedNodeSnapshot {\n offset: number;\n entries: { id: string; degree: number; counts: KnowledgeInspectorRelationshipCounts }[];\n}\n\ninterface RelationshipRecords {\n nodes: KnowledgeNode[];\n truncated: boolean;\n}\n\nconst HANDLE_TTL_MS = 5 * 60_000;\nconst MAX_OPAQUE_ENTRIES = 1_000;\nconst DEFAULT_RECORD_LIMIT = 50;\nconst MAX_RECORD_LIMIT = 50;\nconst DEFAULT_FACT_LIMIT = 25;\nconst MAX_FACT_LIMIT = 100;\nconst DEFAULT_ACTIVITY_LIMIT = 20;\nconst MAX_ACTIVITY_LIMIT = 100;\nconst MAX_RELATED_RECORDS = 25;\nconst MAX_RANK_CANDIDATES = 50;\nconst MAX_RANK_FACTS = 100;\nconst RRF_K = 60;\nconst MAX_NODE_CONTENT_BYTES = 32 * 1024;\n\nfunction opaqueToken(): string {\n return Buffer.from(globalThis.crypto.getRandomValues(new Uint8Array(24))).toString('base64url');\n}\n\nfunction boundedLimit(value: number | undefined, fallback: number, maximum: number): number {\n if (value === undefined) return fallback;\n if (!Number.isInteger(value) || value < 1) return fallback;\n return Math.min(value, maximum);\n}\n\nfunction scopeBadge(scope: KnowledgeScope): KnowledgeInspectorScopeBadge {\n const entry = scope.at(-1);\n if (!entry) throw new KnowledgeInspectorError('unavailable', 'Knowledge record has no scope.');\n const separator = entry.indexOf(':');\n return {\n level: entry.slice(0, separator) as KnowledgeInspectorScopeLevel,\n id: entry.slice(separator + 1),\n };\n}\n\nfunction knowledgeSummary(record: KnowledgeRecord): KnowledgeInspectorRecordSummary {\n return {\n text: record.text,\n scope: scopeBadge(record.scope),\n sourceThreadId: record.sourceThreadId,\n capturedAt: record.capturedAt.toISOString(),\n when: record.when?.toISOString(),\n };\n}\n\nfunction truncateUtf8(value: string, maxBytes: number): { value: string; truncated: boolean } {\n const encoded = Buffer.from(value);\n if (encoded.byteLength <= maxBytes) return { value, truncated: false };\n let end = maxBytes;\n let truncated = encoded.subarray(0, end).toString('utf8');\n while (Buffer.byteLength(truncated) > maxBytes) {\n truncated = encoded.subarray(0, --end).toString('utf8');\n }\n return { value: truncated, truncated: true };\n}\n\nclass ScopedKnowledgeInspector implements KnowledgeInspector {\n readonly #knowledge: KnowledgeStorage;\n readonly #session: Session<MastraCodeState>;\n readonly #handles = new Map<string, HandleEntry>();\n readonly #cursors = new Map<string, CursorEntry>();\n #fingerprint?: string;\n #identityKey = opaqueToken();\n\n constructor(input: { knowledge: KnowledgeStorage; session: Session<MastraCodeState> }) {\n this.#knowledge = input.knowledge;\n this.#session = input.session;\n this.#session.subscribe(event => {\n if (event.type === 'thread_changed' || event.type === 'thread_created' || event.type === 'thread_deleted') {\n this.#invalidateIdnode();\n }\n });\n }\n\n async getScopeTree(): Promise<KnowledgeInspectorScopeTree> {\n const binding = await this.#binding();\n return {\n identityKey: binding.identityKey,\n defaultLevel: 'resource',\n roots: [\n { level: 'org', id: binding.organizationId, available: true },\n { level: 'resource', id: binding.resourceId, available: true },\n binding.threadId\n ? { level: 'thread', id: binding.threadId, available: true }\n : { level: 'thread', available: false, reason: 'No active thread belongs to this project.' },\n ],\n };\n }\n\n async listNodes(input: {\n level: KnowledgeInspectorScopeLevel;\n namePrefix?: string;\n kind?: string;\n sort?: KnowledgeInspectorNodeSort;\n cursor?: string;\n limit?: number;\n }): Promise<KnowledgeInspectorNodeList> {\n const binding = await this.#binding();\n const scope = this.#scope(binding, input.level);\n const limit = boundedLimit(input.limit, DEFAULT_RECORD_LIMIT, MAX_RECORD_LIMIT);\n const sort = input.sort ?? 'relevant';\n if (sort === 'recent') {\n const cursor = this.#consumeCursor(input.cursor, binding, input.level, 'node', {\n namePrefix: input.namePrefix,\n kind: input.kind,\n sort,\n });\n const records = await this.#knowledge.listNodes({\n scope,\n namePrefix: input.namePrefix,\n kind: input.kind,\n cursor,\n limit,\n });\n const nodes: KnowledgeInspectorNodeSummary[] = await Promise.all(\n records.map(async record => ({\n ...this.#recordSummary(record, binding, input.level),\n relationshipCounts: (await this.#sampledRelationshipCounts(record, scope)).counts,\n })),\n );\n await this.#assertStable(binding);\n return {\n identityKey: binding.identityKey,\n scopeLevel: input.level,\n nodes,\n nextCursor:\n records.length === limit\n ? this.#mintCursor(\n binding,\n input.level,\n 'node',\n createKnowledgeNodeCursor(records.at(-1)!, {\n namePrefix: input.namePrefix,\n kind: input.kind,\n }),\n {\n namePrefix: input.namePrefix,\n kind: input.kind,\n sort,\n },\n )\n : undefined,\n sort,\n coverage: 'exact',\n };\n }\n\n const filters = { namePrefix: input.namePrefix, kind: input.kind, sort };\n const encodedSnapshot = this.#consumeCursor(input.cursor, binding, input.level, 'ranked-node', filters);\n const snapshot = encodedSnapshot\n ? (JSON.parse(encodedSnapshot) as RankedNodeSnapshot)\n : await this.#rankedNodeSnapshot(scope, input.namePrefix, input.kind, sort);\n const page = snapshot.entries.slice(snapshot.offset, snapshot.offset + limit);\n const nodes: KnowledgeInspectorNodeSummary[] = [];\n for (const entry of page) {\n const node = await this.#knowledge.getNode(entry.id);\n if (!node || !isKnowledgeScopeVisible(node.scope, scope)) continue;\n nodes.push({ ...this.#recordSummary(node, binding, input.level), relationshipCounts: entry.counts });\n }\n const nextOffset = snapshot.offset + limit;\n await this.#assertStable(binding);\n return {\n identityKey: binding.identityKey,\n scopeLevel: input.level,\n nodes,\n nextCursor:\n nextOffset < snapshot.entries.length\n ? this.#mintCursor(\n binding,\n input.level,\n 'ranked-node',\n JSON.stringify({ ...snapshot, offset: nextOffset } satisfies RankedNodeSnapshot),\n filters,\n )\n : undefined,\n sort,\n coverage: 'recent-window',\n };\n }\n\n async getNode(input: {\n handle: string;\n recordsCursor?: string;\n mentioningRecordsCursor?: string;\n recordLimit?: number;\n }): Promise<KnowledgeInspectorNodeDetail> {\n const binding = await this.#binding();\n const handle = this.#readHandle(input.handle, binding, 'node');\n const scope = this.#scope(binding, handle.level);\n const node = await this.#knowledge.getNode(handle.recordId);\n this.#assertVisible(node, scope);\n const limit = boundedLimit(input.recordLimit, DEFAULT_FACT_LIMIT, MAX_FACT_LIMIT);\n const recordsAfter = this.#consumeCursor(input.recordsCursor, binding, handle.level, 'records');\n const mentioningAfter = this.#consumeCursor(\n input.mentioningRecordsCursor,\n binding,\n handle.level,\n 'mentioning-records',\n );\n const [recordsResult, mentioningResult] = await Promise.all([\n this.#knowledge.listKnowledgeAbout({ node: node.id, scope, after: recordsAfter, limit }),\n this.#knowledge.listKnowledgeMentioning({ node: node.id, scope, after: mentioningAfter, limit }),\n ]);\n const mentioningRecords = mentioningResult.records.filter(record => record.node !== node.id);\n const content = truncateUtf8(node.content ?? '', MAX_NODE_CONTENT_BYTES);\n const [outgoingTargets, incomingParents, relationship] = await Promise.all([\n this.#outgoingTargets(node, recordsResult.records, scope, binding, handle.level),\n this.#incomingParents(node, mentioningRecords, scope, binding, handle.level),\n this.#sampledRelationshipCounts(node, scope),\n ]);\n const links = await Promise.all(\n parseKnowledgeWikilinks(content.value)\n .slice(0, MAX_RELATED_RECORDS)\n .map(async label => {\n const target = await this.#knowledge.resolveNode({ name: label, scope });\n return {\n label,\n node: target ? this.#recordSummary(target, binding, handle.level) : undefined,\n };\n }),\n );\n await this.#assertStable(binding);\n return {\n identityKey: binding.identityKey,\n scopeLevel: handle.level,\n node: { ...this.#recordSummary(node, binding, handle.level), relationshipCounts: relationship.counts },\n records: recordsResult.records.map(knowledgeSummary),\n recordsNextCursor: recordsResult.nextCursor\n ? this.#mintCursor(binding, handle.level, 'records', recordsResult.nextCursor)\n : undefined,\n mentioningRecords: mentioningRecords.map(knowledgeSummary),\n mentioningRecordsNextCursor: mentioningResult.nextCursor\n ? this.#mintCursor(binding, handle.level, 'mentioning-records', mentioningResult.nextCursor)\n : undefined,\n outgoingTargets: {\n nodes: outgoingTargets.nodes,\n partial: outgoingTargets.partial || Boolean(recordsResult.nextCursor),\n },\n incomingParents: {\n nodes: incomingParents.nodes,\n partial: incomingParents.partial || Boolean(mentioningResult.nextCursor),\n },\n relationshipCounts: relationship.counts,\n content: node.content === undefined ? undefined : content.value,\n contentTruncated: content.truncated,\n links,\n };\n }\n\n async listActivity(input: {\n level: KnowledgeInspectorScopeLevel;\n cursor?: string;\n limit?: number;\n }): Promise<KnowledgeInspectorActivityList> {\n const binding = await this.#binding();\n const scope = this.#scope(binding, input.level);\n const limit = boundedLimit(input.limit, DEFAULT_ACTIVITY_LIMIT, MAX_ACTIVITY_LIMIT);\n const after = this.#consumeCursor(input.cursor, binding, input.level, 'activity');\n const events = await this.#knowledge.listActivity({ scope, after, limit });\n const activityEvents: KnowledgeInspectorActivityEvent[] = [];\n for (const event of events) {\n const record = await this.#activityRecord(event, scope, binding, input.level);\n activityEvents.push({\n action: event.action,\n recordType: event.recordType,\n scope: scopeBadge(event.scope),\n sourceThreadId: record ? event.sourceThreadId : undefined,\n createdAt: event.createdAt.toISOString(),\n record,\n });\n }\n await this.#assertStable(binding);\n return {\n identityKey: binding.identityKey,\n scopeLevel: input.level,\n events: activityEvents,\n nextCursor:\n events.length === limit ? this.#mintCursor(binding, input.level, 'activity', events.at(-1)!.id) : undefined,\n };\n }\n\n async #binding(): Promise<Binding> {\n // Scope rungs come from the same resolver the subconscious writes under; an\n // owner id is a USER id and never names a knowledge org.\n const identity = resolveKnowledgeScopeIdentity(this.#session.state.get());\n const sessionResourceId = this.#session.identity.getResourceId();\n if (!identity.resolved) {\n // An unresolved org is its own identity: handles minted under the\n // previous scope must not survive into whatever resolves next.\n this.#invalidateIdnode();\n throw new KnowledgeInspectorError(\n 'unavailable',\n identity.reason\n ? `Knowledge inspection unavailable: ${identity.reason}`\n : 'Knowledge inspection requires a resolved organization for this session.',\n );\n }\n if (!sessionResourceId) {\n throw new KnowledgeInspectorError('unavailable', 'Knowledge inspection requires an active project.');\n }\n const organizationId = identity.organizationId;\n const resourceId = identity.knowledgeResourceId ?? sessionResourceId;\n const activeThreadId = this.#session.thread.getId() ?? undefined;\n const thread = activeThreadId ? await this.#session.thread.getById({ threadId: activeThreadId }) : null;\n const threadId = thread?.resourceId === sessionResourceId ? thread.id : undefined;\n const fingerprint = `${organizationId}\\0${resourceId}\\0${threadId ?? ''}`;\n if (this.#fingerprint !== fingerprint) {\n this.#fingerprint = fingerprint;\n this.#identityKey = opaqueToken();\n this.#handles.clear();\n this.#cursors.clear();\n }\n return { organizationId, resourceId, threadId, fingerprint, identityKey: this.#identityKey };\n }\n\n #scope(binding: Binding, level: KnowledgeInspectorScopeLevel): KnowledgeScope {\n if (level === 'org') return [`org:${binding.organizationId}`];\n const scope = [`org:${binding.organizationId}`, `resource:${binding.resourceId}`];\n if (level === 'resource') return scope;\n if (!binding.threadId) {\n throw new KnowledgeInspectorError('unavailable', 'The active thread does not belong to this project.');\n }\n return [...scope, `thread:${binding.threadId}`];\n }\n\n async #assertStable(binding: Binding): Promise<void> {\n const current = await this.#binding();\n if (current.identityKey !== binding.identityKey || current.fingerprint !== binding.fingerprint) {\n throw new KnowledgeInspectorError('stale-handle', 'Knowledge scope changed while the request was running.');\n }\n }\n\n #assertVisible<T extends KnowledgeNode>(record: T | null, scope: KnowledgeScope): asserts record is T {\n if (!record || !isKnowledgeScopeVisible(record.scope, scope)) {\n throw new KnowledgeInspectorError('not-visible', 'Knowledge record is not visible in the selected scope.');\n }\n }\n\n #recordSummary(\n record: KnowledgeNode,\n binding: Binding,\n level: KnowledgeInspectorScopeLevel,\n ): KnowledgeInspectorNodeSummary {\n const type: KnowledgeInspectorRecordType = 'node';\n return {\n handle: this.#mintHandle(binding, level, type, record.id),\n type,\n name: record.name,\n kind: record.kind,\n scope: scopeBadge(record.scope),\n version: record.version,\n updatedAt: record.updatedAt.toISOString(),\n };\n }\n\n async #rankedNodeSnapshot(\n scope: KnowledgeScope,\n namePrefix: string | undefined,\n kind: string | undefined,\n sort: Exclude<KnowledgeInspectorNodeSort, 'recent'>,\n ): Promise<RankedNodeSnapshot> {\n const records = await this.#knowledge.listNodes({\n scope,\n namePrefix,\n kind,\n limit: MAX_RANK_CANDIDATES,\n });\n const ranked = await Promise.all(\n records.map(async (node, recencyRank) => ({\n node,\n recencyRank,\n ...(await this.#sampledRelationshipCounts(node, scope)),\n })),\n );\n const connected = [...ranked].sort(\n (a, b) => b.degree - a.degree || a.recencyRank - b.recencyRank || a.node.id.localeCompare(b.node.id),\n );\n const connectedRank = new Map(connected.map((entry, index) => [entry.node.id, index]));\n const ordered =\n sort === 'connected'\n ? connected\n : [...ranked].sort((a, b) => {\n const aScore = 1 / (RRF_K + a.recencyRank + 1) + 1 / (RRF_K + connectedRank.get(a.node.id)! + 1);\n const bScore = 1 / (RRF_K + b.recencyRank + 1) + 1 / (RRF_K + connectedRank.get(b.node.id)! + 1);\n return bScore - aScore || a.recencyRank - b.recencyRank || a.node.id.localeCompare(b.node.id);\n });\n return {\n offset: 0,\n entries: ordered.map(entry => ({ id: entry.node.id, degree: entry.degree, counts: entry.counts })),\n };\n }\n\n async #sampledRelationshipCounts(\n node: KnowledgeNode,\n scope: KnowledgeScope,\n ): Promise<{ degree: number; counts: KnowledgeInspectorRelationshipCounts }> {\n const [aboutResult, mentioningResult] = await Promise.all([\n this.#knowledge.listKnowledgeAbout({ node: node.id, scope, limit: MAX_RANK_FACTS }),\n this.#knowledge.listKnowledgeMentioning({ node: node.id, scope, limit: MAX_RANK_FACTS }),\n ]);\n const [outgoing, incoming] = await Promise.all([\n this.#outgoingNodeRecords(node, aboutResult.records, scope),\n this.#incomingParentRecords(node, mentioningResult.records, scope),\n ]);\n const mentioningRecords = mentioningResult.records.filter(record => record.node !== node.id);\n const degree = new Set([...outgoing.nodes, ...incoming.nodes].map(record => record.id)).size;\n return {\n degree,\n counts: {\n records: aboutResult.records.length + mentioningRecords.length,\n outgoing: outgoing.nodes.length,\n incoming: incoming.nodes.length,\n sampled: Boolean(\n aboutResult.nextCursor || mentioningResult.nextCursor || outgoing.truncated || incoming.truncated,\n ),\n },\n };\n }\n\n async #outgoingNodeRecords(\n current: KnowledgeNode,\n records: KnowledgeRecord[],\n scope: KnowledgeScope,\n ): Promise<RelationshipRecords> {\n const related = new Map<string, KnowledgeNode>();\n let truncated = false;\n const sources = [current.content ?? '', ...records.map(record => record.text)];\n for (const source of sources) {\n for (const name of parseKnowledgeWikilinks(source)) {\n if (related.size >= MAX_RELATED_RECORDS) {\n truncated = true;\n break;\n }\n const node = await this.#knowledge.resolveNode({ name, scope });\n if (node && node.id !== current.id && isKnowledgeScopeVisible(node.scope, scope)) {\n related.set(node.id, node);\n }\n }\n if (truncated) break;\n }\n return { nodes: [...related.values()], truncated };\n }\n\n async #incomingParentRecords(\n current: KnowledgeNode,\n records: KnowledgeRecord[],\n scope: KnowledgeScope,\n ): Promise<RelationshipRecords> {\n const related = new Map<string, KnowledgeNode>();\n let truncated = false;\n for (const record of records) {\n if (record.node === current.id || related.has(record.node)) continue;\n if (related.size >= MAX_RELATED_RECORDS) {\n truncated = true;\n break;\n }\n const node = await this.#knowledge.getNode(record.node);\n if (node && isKnowledgeScopeVisible(node.scope, scope)) related.set(node.id, node);\n }\n return { nodes: [...related.values()], truncated };\n }\n\n async #outgoingTargets(\n current: KnowledgeNode,\n records: KnowledgeRecord[],\n scope: KnowledgeScope,\n binding: Binding,\n level: KnowledgeInspectorScopeLevel,\n ): Promise<KnowledgeInspectorRelationshipPreview> {\n const related = await this.#outgoingNodeRecords(current, records, scope);\n return {\n nodes: related.nodes.map(node => this.#recordSummary(node, binding, level)),\n partial: related.truncated,\n };\n }\n\n async #incomingParents(\n current: KnowledgeNode,\n records: KnowledgeRecord[],\n scope: KnowledgeScope,\n binding: Binding,\n level: KnowledgeInspectorScopeLevel,\n ): Promise<KnowledgeInspectorRelationshipPreview> {\n const related = await this.#incomingParentRecords(current, records, scope);\n return {\n nodes: related.nodes.map(node => this.#recordSummary(node, binding, level)),\n partial: related.truncated,\n };\n }\n\n async #activityRecord(\n event: KnowledgeActivityEvent,\n scope: KnowledgeScope,\n binding: Binding,\n level: KnowledgeInspectorScopeLevel,\n ): Promise<KnowledgeInspectorNodeSummary | undefined> {\n if (event.recordType === 'node') {\n const node = await this.#knowledge.getNode(event.recordId);\n return node && isKnowledgeScopeVisible(node.scope, scope) ? this.#recordSummary(node, binding, level) : undefined;\n }\n const record = await this.#knowledge.getKnowledge({ id: event.recordId, includeDeleted: true });\n if (!record || !isKnowledgeScopeVisible(record.scope, scope)) return undefined;\n const node = await this.#knowledge.getNode(record.node);\n return node && isKnowledgeScopeVisible(node.scope, scope) ? this.#recordSummary(node, binding, level) : undefined;\n }\n\n #mintHandle(\n binding: Binding,\n level: KnowledgeInspectorScopeLevel,\n type: KnowledgeInspectorRecordType,\n recordId: string,\n ): string {\n this.#pruneOpaqueEntries();\n const token = opaqueToken();\n this.#handles.set(token, {\n identityKey: binding.identityKey,\n level,\n type,\n recordId,\n expiresAt: Date.now() + HANDLE_TTL_MS,\n });\n return token;\n }\n\n #readHandle(handle: string, binding: Binding, expectedType: KnowledgeInspectorRecordType): HandleEntry {\n const entry = this.#handles.get(handle);\n if (!entry || entry.expiresAt < Date.now() || entry.type !== expectedType) {\n throw new KnowledgeInspectorError('invalid-handle', 'Knowledge record handle is invalid or expired.');\n }\n if (entry.identityKey !== binding.identityKey) {\n throw new KnowledgeInspectorError('stale-handle', 'Knowledge record handle belongs to a previous scope.');\n }\n return entry;\n }\n\n #mintCursor(\n binding: Binding,\n level: KnowledgeInspectorScopeLevel,\n kind: CursorEntry['kind'],\n value: string,\n filters?: CursorEntry['filters'],\n ): string {\n this.#pruneOpaqueEntries();\n const token = opaqueToken();\n this.#cursors.set(token, {\n identityKey: binding.identityKey,\n level,\n kind,\n value,\n filters,\n expiresAt: Date.now() + HANDLE_TTL_MS,\n });\n return token;\n }\n\n #consumeCursor(\n cursor: string | undefined,\n binding: Binding,\n level: KnowledgeInspectorScopeLevel,\n kind: CursorEntry['kind'],\n filters?: CursorEntry['filters'],\n ): string | undefined {\n if (!cursor) return undefined;\n const entry = this.#cursors.get(cursor);\n if (\n !entry ||\n entry.expiresAt < Date.now() ||\n entry.identityKey !== binding.identityKey ||\n entry.level !== level ||\n entry.kind !== kind ||\n entry.filters?.namePrefix !== filters?.namePrefix ||\n entry.filters?.kind !== filters?.kind ||\n entry.filters?.sort !== filters?.sort\n ) {\n throw new KnowledgeInspectorError(\n 'invalid-cursor',\n 'Knowledge cursor does not match the active scope and filters.',\n );\n }\n return entry.value;\n }\n\n #pruneOpaqueEntries(): void {\n const now = Date.now();\n for (const [token, entry] of this.#handles) {\n if (entry.expiresAt < now) this.#handles.delete(token);\n }\n for (const [token, entry] of this.#cursors) {\n if (entry.expiresAt < now) this.#cursors.delete(token);\n }\n while (this.#handles.size + this.#cursors.size >= MAX_OPAQUE_ENTRIES) {\n const handle = this.#handles.keys().next().value;\n if (handle) this.#handles.delete(handle);\n else {\n const cursor = this.#cursors.keys().next().value;\n if (cursor) this.#cursors.delete(cursor);\n else break;\n }\n }\n }\n\n #invalidateIdnode(): void {\n this.#fingerprint = undefined;\n this.#identityKey = opaqueToken();\n this.#handles.clear();\n this.#cursors.clear();\n }\n}\n\nexport async function createKnowledgeInspector(input: {\n storage: MastraCompositeStore;\n session: Session<MastraCodeState>;\n}): Promise<KnowledgeInspector | undefined> {\n const knowledge = await input.storage.getStore('knowledge');\n return knowledge ? new ScopedKnowledgeInspector({ knowledge, session: input.session }) : undefined;\n}\n"],"mappings":"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"}
|
|
@@ -24,6 +24,12 @@ export interface CustomProviderSetting {
|
|
|
24
24
|
}
|
|
25
25
|
/** Storage backend type. */
|
|
26
26
|
export type StorageBackend = 'libsql' | 'pg';
|
|
27
|
+
/** Experimental agent implementation used by MastraCode. */
|
|
28
|
+
export type ExperimentalAgent = 'durable' | 'evented';
|
|
29
|
+
export declare class ExperimentalAgentSettingsError extends Error {
|
|
30
|
+
readonly value: unknown;
|
|
31
|
+
constructor(value: unknown, settingsPath?: string);
|
|
32
|
+
}
|
|
27
33
|
/** LibSQL-specific storage settings. */
|
|
28
34
|
export interface LibSQLStorageSettings {
|
|
29
35
|
url?: string;
|
|
@@ -287,6 +293,8 @@ export interface GlobalSettings {
|
|
|
287
293
|
browser: BrowserSettings;
|
|
288
294
|
shellPassthrough: ShellPassthroughSettings;
|
|
289
295
|
voice: VoiceSettings;
|
|
296
|
+
experimentalAgent: unknown;
|
|
297
|
+
_experimentalAgentSettingsPath?: string;
|
|
290
298
|
backgroundTools: BackgroundToolSettings;
|
|
291
299
|
signals: SignalSettings;
|
|
292
300
|
mcp: McpDiscoverySettings;
|
|
@@ -339,6 +347,7 @@ export declare const WEB_SEARCH_PROVIDER_VALUES: WebSearchProviderSetting[];
|
|
|
339
347
|
export declare function migrateAccountPreferences(settings: GlobalSettings, previousAccountId: string, nextAccountId: string): void;
|
|
340
348
|
/** Remove persisted routing choices that point at deleted OAuth account instances. */
|
|
341
349
|
export declare function pruneRemovedAccountPreferences(settings: GlobalSettings, removedAccountIds: Iterable<string>): void;
|
|
350
|
+
export declare function parseExperimentalAgentSetting(value: unknown, settingsPath?: string): ExperimentalAgent | null;
|
|
342
351
|
export declare function getSettingsPath(): string;
|
|
343
352
|
export declare function getCustomProviderId(name: string): string;
|
|
344
353
|
export declare function toCustomProviderModelId(providerName: string, modelName: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/onboarding/settings.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/onboarding/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,13 +7,20 @@ import { DEFAULT_STT_PROVIDER, resolveSTTModel } from "../voice/stt-registry.js"
|
|
|
7
7
|
import { pruneUnknownModePackFallbacks, pruneUnknownPackAccountPreferences } from "./packs.js";
|
|
8
8
|
import { dirname, join } from "path";
|
|
9
9
|
import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, statSync, writeFileSync } from "fs";
|
|
10
|
-
import { randomUUID } from "crypto";
|
|
11
10
|
//#region src/onboarding/settings.ts
|
|
12
11
|
/**
|
|
13
12
|
* Persistent global settings stored in the app data directory as settings.json.
|
|
14
13
|
* This file persists onboarding state AND user preferences (model choices, yolo, etc.)
|
|
15
14
|
* so they carry across threads and restarts.
|
|
16
15
|
*/
|
|
16
|
+
var ExperimentalAgentSettingsError = class extends Error {
|
|
17
|
+
value;
|
|
18
|
+
constructor(value, settingsPath) {
|
|
19
|
+
super(`Invalid "experimentalAgent" setting${settingsPath ? ` in ${settingsPath}` : ""}: ${JSON.stringify(value)}. Remove the "experimentalAgent" key or set it to "durable", "evented", or null.`);
|
|
20
|
+
this.name = "ExperimentalAgentSettingsError";
|
|
21
|
+
this.value = value;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
17
24
|
/** Gateway provider key used in AuthStorage. */
|
|
18
25
|
const MASTRA_GATEWAY_PROVIDER = "mastra-gateway";
|
|
19
26
|
/** Default gateway URL. */
|
|
@@ -143,6 +150,7 @@ const DEFAULTS = {
|
|
|
143
150
|
engine: defaultVoiceEngine(),
|
|
144
151
|
provider: DEFAULT_STT_PROVIDER
|
|
145
152
|
},
|
|
153
|
+
experimentalAgent: null,
|
|
146
154
|
backgroundTools: { enabled: false },
|
|
147
155
|
signals: {
|
|
148
156
|
unixSocketPubSub: false,
|
|
@@ -259,6 +267,22 @@ function parseGithubPollIntervalMs(value) {
|
|
|
259
267
|
if (intervalMs < 1e4) return DEFAULTS.signals.githubPollIntervalMs;
|
|
260
268
|
return Math.min(intervalMs, GITHUB_POLL_INTERVAL_MAX_MS);
|
|
261
269
|
}
|
|
270
|
+
function parseExperimentalAgentSetting(value, settingsPath) {
|
|
271
|
+
if (value === void 0 || value === null) return null;
|
|
272
|
+
if (value === "durable" || value === "evented") return value;
|
|
273
|
+
throw new ExperimentalAgentSettingsError(value, settingsPath);
|
|
274
|
+
}
|
|
275
|
+
function loadExperimentalAgentSetting(value, settingsPath) {
|
|
276
|
+
try {
|
|
277
|
+
return { selection: parseExperimentalAgentSetting(value, settingsPath) };
|
|
278
|
+
} catch (error) {
|
|
279
|
+
if (error instanceof ExperimentalAgentSettingsError) return {
|
|
280
|
+
selection: error.value,
|
|
281
|
+
settingsPath
|
|
282
|
+
};
|
|
283
|
+
throw error;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
262
286
|
function parseBackgroundToolSettings(rawBackgroundTools) {
|
|
263
287
|
const raw = rawBackgroundTools && typeof rawBackgroundTools === "object" ? rawBackgroundTools : {};
|
|
264
288
|
return { enabled: typeof raw.enabled === "boolean" ? raw.enabled : DEFAULTS.backgroundTools.enabled };
|
|
@@ -503,6 +527,7 @@ function migrateFromAuth(settingsPath) {
|
|
|
503
527
|
const raw = JSON.parse(readFileSync(settingsPath, "utf-8"));
|
|
504
528
|
const rawCustomPacks = Array.isArray(raw.customModelPacks) ? raw.customModelPacks : [];
|
|
505
529
|
const modePackOverrides = parseModePackOverrides(raw.models?.modePackOverrides);
|
|
530
|
+
const experimentalAgentSetting = loadExperimentalAgentSetting(raw.experimentalAgent, settingsPath);
|
|
506
531
|
settings = {
|
|
507
532
|
onboarding: {
|
|
508
533
|
...DEFAULTS.onboarding,
|
|
@@ -538,6 +563,8 @@ function migrateFromAuth(settingsPath) {
|
|
|
538
563
|
browser: parseBrowserSettings(raw.browser),
|
|
539
564
|
shellPassthrough: parseShellPassthroughSettings(raw.shellPassthrough),
|
|
540
565
|
voice: parseVoiceSettings(raw.voice),
|
|
566
|
+
experimentalAgent: experimentalAgentSetting.selection,
|
|
567
|
+
_experimentalAgentSettingsPath: experimentalAgentSetting.settingsPath,
|
|
541
568
|
backgroundTools: parseBackgroundToolSettings(raw.backgroundTools),
|
|
542
569
|
signals: parseSignalSettings(raw.signals),
|
|
543
570
|
mcp: parseMcpDiscoverySettings(raw.mcp),
|
|
@@ -600,6 +627,7 @@ function loadSettings(filePath = getSettingsPath()) {
|
|
|
600
627
|
const raw = JSON.parse(readFileSync(filePath, "utf-8"));
|
|
601
628
|
const rawCustomPacks = Array.isArray(raw.customModelPacks) ? raw.customModelPacks : [];
|
|
602
629
|
const modePackOverrides = parseModePackOverrides(raw.models?.modePackOverrides);
|
|
630
|
+
const experimentalAgentSetting = loadExperimentalAgentSetting(raw.experimentalAgent, filePath);
|
|
603
631
|
const settings = {
|
|
604
632
|
...raw,
|
|
605
633
|
onboarding: {
|
|
@@ -636,6 +664,8 @@ function loadSettings(filePath = getSettingsPath()) {
|
|
|
636
664
|
browser: parseBrowserSettings(raw.browser),
|
|
637
665
|
shellPassthrough: parseShellPassthroughSettings(raw.shellPassthrough),
|
|
638
666
|
voice: parseVoiceSettings(raw.voice),
|
|
667
|
+
experimentalAgent: experimentalAgentSetting.selection,
|
|
668
|
+
_experimentalAgentSettingsPath: experimentalAgentSetting.settingsPath,
|
|
639
669
|
backgroundTools: parseBackgroundToolSettings(raw.backgroundTools),
|
|
640
670
|
signals: parseSignalSettings(raw.signals),
|
|
641
671
|
mcp: parseMcpDiscoverySettings(raw.mcp),
|
|
@@ -798,7 +828,7 @@ function getSignalSettingsForSave(settings, filePath) {
|
|
|
798
828
|
return settings.signals;
|
|
799
829
|
}
|
|
800
830
|
function writeFileAtomically(filePath, content) {
|
|
801
|
-
const tempPath = `${filePath}.${process.pid}.${randomUUID()}.tmp`;
|
|
831
|
+
const tempPath = `${filePath}.${process.pid}.${globalThis.crypto.randomUUID()}.tmp`;
|
|
802
832
|
try {
|
|
803
833
|
writeFileSync(tempPath, content, {
|
|
804
834
|
encoding: "utf-8",
|
|
@@ -815,7 +845,9 @@ function saveSettings(settings, filePath = getSettingsPath()) {
|
|
|
815
845
|
const signals = getSignalSettingsForSave(settings, filePath);
|
|
816
846
|
settings.signals = signals;
|
|
817
847
|
loadedSignalSettings.set(settings, cloneSignalSettings(signals));
|
|
818
|
-
|
|
848
|
+
const settingsToSave = { ...settings };
|
|
849
|
+
delete settingsToSave._experimentalAgentSettingsPath;
|
|
850
|
+
writeFileAtomically(filePath, JSON.stringify(settingsToSave, null, 2));
|
|
819
851
|
}
|
|
820
852
|
/** Marker file name to track which provider last used a profile. */
|
|
821
853
|
const PROFILE_PROVIDER_MARKER = ".mastra-provider";
|
|
@@ -1030,6 +1062,6 @@ async function createBrowserFromSettings(settings, { chatModelId } = {}) {
|
|
|
1030
1062
|
throw new Error(`Unsupported browser provider: ${provider}`);
|
|
1031
1063
|
}
|
|
1032
1064
|
//#endregion
|
|
1033
|
-
export { GITHUB_POLL_INTERVAL_DEFAULT_MS, GITHUB_POLL_INTERVAL_MAX_MS, GITHUB_POLL_INTERVAL_MIN_MS, MASTRA_GATEWAY_DEFAULT_URL, MASTRA_GATEWAY_PROVIDER, MEMORY_GATEWAY_DEFAULT_URL, MEMORY_GATEWAY_PROVIDER, OBSERVABILITY_AUTH_PREFIX, STAGEHAND_PROVIDER_ENV_VARS, STORAGE_DEFAULTS, THINKING_LEVEL_VALUES, THREAD_ACTIVE_MODEL_PACK_ID_KEY, THREAD_FALLBACK_STATUS_KEY, VIEWPORT_PRESETS, WEB_SEARCH_PROVIDER_VALUES, checkProfileProviderMismatch, createBrowserFromSettings, defaultVoiceEngine, findModePackForModel, getCustomProviderId, getProfileProvider, getSettingsPath, isThinkingLevelSetting, loadSettings, migrateAccountPreferences, migrateLegacyVariedPack, parseCustomProviders, parseThreadSettings, parseViewportInput, pruneRemovedAccountPreferences, resolveDefaultThinkingLevel, resolveLspSetting, resolveModePackModels, resolveModelDefaults, resolveOmModel, resolveOmRoleModel, resolveStagehandModel, resolveThreadActiveModelPackId, saveSettings, setProfileProvider, stripMastraCodeCustomProviderPrefix, toActiveBrowserSettings, toCustomProviderModelId };
|
|
1065
|
+
export { ExperimentalAgentSettingsError, GITHUB_POLL_INTERVAL_DEFAULT_MS, GITHUB_POLL_INTERVAL_MAX_MS, GITHUB_POLL_INTERVAL_MIN_MS, MASTRA_GATEWAY_DEFAULT_URL, MASTRA_GATEWAY_PROVIDER, MEMORY_GATEWAY_DEFAULT_URL, MEMORY_GATEWAY_PROVIDER, OBSERVABILITY_AUTH_PREFIX, STAGEHAND_PROVIDER_ENV_VARS, STORAGE_DEFAULTS, THINKING_LEVEL_VALUES, THREAD_ACTIVE_MODEL_PACK_ID_KEY, THREAD_FALLBACK_STATUS_KEY, VIEWPORT_PRESETS, WEB_SEARCH_PROVIDER_VALUES, checkProfileProviderMismatch, createBrowserFromSettings, defaultVoiceEngine, findModePackForModel, getCustomProviderId, getProfileProvider, getSettingsPath, isThinkingLevelSetting, loadSettings, migrateAccountPreferences, migrateLegacyVariedPack, parseCustomProviders, parseExperimentalAgentSetting, parseThreadSettings, parseViewportInput, pruneRemovedAccountPreferences, resolveDefaultThinkingLevel, resolveLspSetting, resolveModePackModels, resolveModelDefaults, resolveOmModel, resolveOmRoleModel, resolveStagehandModel, resolveThreadActiveModelPackId, saveSettings, setProfileProvider, stripMastraCodeCustomProviderPrefix, toActiveBrowserSettings, toCustomProviderModelId };
|
|
1034
1066
|
|
|
1035
1067
|
//# sourceMappingURL=settings.js.map
|