@treeseed/core 0.10.10 → 0.10.11

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.
@@ -1,5 +1,4 @@
1
1
  ---
2
- import { getCollection, render } from 'astro:content';
3
2
  import ContentLayout from '../layouts/ContentLayout.astro';
4
3
  import BridgeLayout from '../layouts/BridgeLayout.astro';
5
4
  import PublishedContentBody from '../components/site/PublishedContentBody.astro';
@@ -10,13 +9,14 @@ export const prerender = false;
10
9
 
11
10
  const slug = String(Astro.params.slug ?? Astro.url.pathname.replace(/^\/+|\/+$/g, ''));
12
11
  const publishedRuntime = isPublishedRuntimeContentMode();
13
- const localEntry = publishedRuntime ? null : (await getCollection('pages')).find((candidate) => candidate.data.slug === slug) ?? null;
12
+ const contentApi = publishedRuntime ? null : await import('astro:content');
13
+ const localEntry = contentApi ? (await contentApi.getCollection('pages')).find((candidate) => candidate.data.slug === slug) ?? null : null;
14
14
  const publishedEntry = publishedRuntime ? await loadPublishedEntry(Astro.locals, 'pages', slug) : null;
15
15
  const entry = publishedRuntime ? publishedEntry?.entry ?? null : localEntry;
16
16
  if (!entry) {
17
17
  Astro.response.status = 404;
18
18
  }
19
- const rendered = !publishedRuntime && localEntry ? await render(localEntry) : null;
19
+ const rendered = contentApi && localEntry ? await contentApi.render(localEntry) : null;
20
20
  const Content = rendered?.Content ?? null;
21
21
  const currentPath = Astro.url.pathname;
22
22
  ---
@@ -1,5 +1,4 @@
1
1
  ---
2
- import { getCollection, render } from 'astro:content';
3
2
  import ProfileLayout from '../../layouts/ProfileLayout.astro';
4
3
  import { resolveReferences } from '../../utils/hub-content';
5
4
  import PublishedContentBody from '../../components/site/PublishedContentBody.astro';
@@ -10,15 +9,16 @@ export const prerender = false;
10
9
 
11
10
  const slug = String(Astro.params.slug ?? '');
12
11
  const publishedRuntime = isPublishedRuntimeContentMode();
13
- const agents = publishedRuntime ? [] : await getCollection('agents');
14
- const localAgent = publishedRuntime ? null : agents.find((candidate) => candidate.id === slug) ?? null;
12
+ const contentApi = publishedRuntime ? null : await import('astro:content');
13
+ const agents = contentApi ? await contentApi.getCollection('agents') : [];
14
+ const localAgent = contentApi ? agents.find((candidate) => candidate.id === slug) ?? null : null;
15
15
  const publishedAgent = publishedRuntime ? await loadPublishedEntry(Astro.locals, 'agents', slug) : null;
16
16
  const agent = publishedRuntime ? publishedAgent?.entry ?? null : localAgent;
17
17
  const metadata = publishedRuntime ? metadataFromPublishedContent(publishedAgent?.content) : null;
18
18
  if (!agent) {
19
19
  Astro.response.status = 404;
20
20
  }
21
- const rendered = !publishedRuntime && localAgent ? await render(localAgent) : null;
21
+ const rendered = contentApi && localAgent ? await contentApi.render(localAgent) : null;
22
22
  const Content = rendered?.Content ?? null;
23
23
  const relatedQuestions = publishedRuntime
24
24
  ? await resolvePublishedReferences(Astro.locals, 'questions', metadata?.relatedQuestions)
@@ -1,11 +1,13 @@
1
1
  ---
2
- import { getCollection } from 'astro:content';
3
2
  import MainLayout from '../../layouts/MainLayout.astro';
4
3
  import SectionIntro from '../../components/site/SectionIntro.astro';
5
4
  import ProfileList from '../../components/site/ProfileList.astro';
6
5
  import { isPublishedRuntimeContentMode, loadPublishedCollection } from '../../utils/site-content-runtime';
7
6
 
8
- const agents = isPublishedRuntimeContentMode() ? await loadPublishedCollection(Astro.locals, 'agents') : await getCollection('agents');
7
+ const publishedRuntime = isPublishedRuntimeContentMode();
8
+ const agents = publishedRuntime
9
+ ? await loadPublishedCollection(Astro.locals, 'agents')
10
+ : await (await import('astro:content')).getCollection('agents');
9
11
  ---
10
12
 
11
13
  <MainLayout title="Agents" description="Software contributors participating in the TreeSeed working site." currentPath="/agents/">
@@ -1,5 +1,4 @@
1
1
  ---
2
- import { getCollection, render } from 'astro:content';
3
2
  import BookLayout from '../../layouts/BookLayout.astro';
4
3
  import PublishedContentBody from '../../components/site/PublishedContentBody.astro';
5
4
  import RouteNotFound from '../../components/site/RouteNotFound.astro';
@@ -9,14 +8,15 @@ export const prerender = false;
9
8
 
10
9
  const slug = String(Astro.params.slug ?? '');
11
10
  const publishedRuntime = isPublishedRuntimeContentMode();
12
- const books = (await getCollection('books')).sort((a, b) => a.data.order - b.data.order);
11
+ const contentApi = publishedRuntime ? null : await import('astro:content');
12
+ const books = contentApi ? (await contentApi.getCollection('books')).sort((a, b) => a.data.order - b.data.order) : [];
13
13
  const localBook = books.find((candidate) => candidate.id === slug || candidate.data.slug === slug) ?? null;
14
14
  const publishedBook = publishedRuntime ? await loadPublishedEntry(Astro.locals, 'books', slug) : null;
15
- const book = publishedRuntime ? publishedBook?.entry ?? localBook : localBook;
15
+ const book = publishedRuntime ? publishedBook?.entry ?? null : localBook;
16
16
  if (!book) {
17
17
  Astro.response.status = 404;
18
18
  }
19
- const rendered = localBook ? await render(localBook) : null;
19
+ const rendered = contentApi && localBook ? await contentApi.render(localBook) : null;
20
20
  const Content = rendered?.Content ?? null;
21
21
  ---
22
22
 
@@ -1,13 +1,13 @@
1
1
  ---
2
- import { getCollection } from 'astro:content';
3
2
  import MainLayout from '../../layouts/MainLayout.astro';
4
3
  import SectionIntro from '../../components/site/SectionIntro.astro';
5
4
  import BookList from '../../components/site/BookList.astro';
6
5
  import { isPublishedRuntimeContentMode, loadPublishedCollection } from '../../utils/site-content-runtime';
7
6
 
8
- const books = isPublishedRuntimeContentMode()
7
+ const publishedRuntime = isPublishedRuntimeContentMode();
8
+ const books = publishedRuntime
9
9
  ? (await loadPublishedCollection(Astro.locals, 'books')).sort((a, b) => Number(a.data.order ?? 0) - Number(b.data.order ?? 0))
10
- : (await getCollection('books')).sort((a, b) => a.data.order - b.data.order);
10
+ : (await (await import('astro:content')).getCollection('books')).sort((a, b) => a.data.order - b.data.order);
11
11
  ---
12
12
 
13
13
  <MainLayout title="Books" description="Queryable book metadata for the TreeSeed working site." currentPath="/books/">
@@ -1,5 +1,4 @@
1
1
  ---
2
- import { getCollection, render } from 'astro:content';
3
2
  import AuthoredEntryLayout from '../../layouts/AuthoredEntryLayout.astro';
4
3
  import { resolveContributor, resolveReferences } from '../../utils/hub-content';
5
4
  import PublishedContentBody from '../../components/site/PublishedContentBody.astro';
@@ -16,15 +15,16 @@ export const prerender = false;
16
15
 
17
16
  const slug = String(Astro.params.slug ?? '');
18
17
  const publishedRuntime = isPublishedRuntimeContentMode();
19
- const decisions = publishedRuntime ? [] : await getCollection('decisions', ({ data }) => !data.draft);
20
- const localDecision = publishedRuntime ? null : decisions.find((candidate) => candidate.id === slug) ?? null;
18
+ const contentApi = publishedRuntime ? null : await import('astro:content');
19
+ const decisions = contentApi ? await contentApi.getCollection('decisions', ({ data }) => !data.draft) : [];
20
+ const localDecision = contentApi ? decisions.find((candidate) => candidate.id === slug) ?? null : null;
21
21
  const publishedDecision = publishedRuntime ? await loadPublishedEntry(Astro.locals, 'decisions', slug) : null;
22
22
  const decision = publishedRuntime ? publishedDecision?.entry ?? null : localDecision;
23
23
  const metadata = publishedRuntime ? metadataFromPublishedContent(publishedDecision?.content) : null;
24
24
  if (!decision) {
25
25
  Astro.response.status = 404;
26
26
  }
27
- const rendered = !publishedRuntime && localDecision ? await render(localDecision) : null;
27
+ const rendered = contentApi && localDecision ? await contentApi.render(localDecision) : null;
28
28
  const Content = rendered?.Content ?? null;
29
29
  const contributor = publishedRuntime
30
30
  ? await resolvePublishedContributor(Astro.locals, metadata?.primaryContributor)
@@ -1,5 +1,4 @@
1
1
  ---
2
- import { getCollection, render } from 'astro:content';
3
2
  import AuthoredEntryLayout from '../../layouts/AuthoredEntryLayout.astro';
4
3
  import PublishedContentBody from '../../components/site/PublishedContentBody.astro';
5
4
  import RouteNotFound from '../../components/site/RouteNotFound.astro';
@@ -9,15 +8,16 @@ export const prerender = false;
9
8
 
10
9
  const slug = String(Astro.params.slug ?? '');
11
10
  const publishedRuntime = isPublishedRuntimeContentMode();
12
- const notes = publishedRuntime ? [] : await getCollection('notes', ({ data }) => !data.draft);
13
- const localNote = publishedRuntime ? null : notes.find((candidate) => candidate.id === slug) ?? null;
11
+ const contentApi = publishedRuntime ? null : await import('astro:content');
12
+ const notes = contentApi ? await contentApi.getCollection('notes', ({ data }) => !data.draft) : [];
13
+ const localNote = contentApi ? notes.find((candidate) => candidate.id === slug) ?? null : null;
14
14
  const publishedNote = publishedRuntime ? await loadPublishedEntry(Astro.locals, 'notes', slug) : null;
15
15
  const note = publishedRuntime ? publishedNote?.entry ?? null : localNote;
16
16
  const metadata = publishedRuntime ? metadataFromPublishedContent(publishedNote?.content) : null;
17
17
  if (!note) {
18
18
  Astro.response.status = 404;
19
19
  }
20
- const rendered = !publishedRuntime && localNote ? await render(localNote) : null;
20
+ const rendered = contentApi && localNote ? await contentApi.render(localNote) : null;
21
21
  const Content = rendered?.Content ?? null;
22
22
  ---
23
23
 
@@ -1,13 +1,13 @@
1
1
  ---
2
- import { getCollection } from 'astro:content';
3
2
  import MainLayout from '../../layouts/MainLayout.astro';
4
3
  import SectionIntro from '../../components/site/SectionIntro.astro';
5
4
  import NotesList from '../../components/site/NotesList.astro';
6
5
  import { isPublishedRuntimeContentMode, loadPublishedCollection } from '../../utils/site-content-runtime';
7
6
 
8
- const notes = isPublishedRuntimeContentMode()
7
+ const publishedRuntime = isPublishedRuntimeContentMode();
8
+ const notes = publishedRuntime
9
9
  ? (await loadPublishedCollection(Astro.locals, 'notes')).sort((a, b) => b.data.date.valueOf() - a.data.date.valueOf())
10
- : (await getCollection('notes', ({ data }) => !data.draft)).sort(
10
+ : (await (await import('astro:content')).getCollection('notes', ({ data }) => !data.draft)).sort(
11
11
  (a, b) => b.data.date.valueOf() - a.data.date.valueOf(),
12
12
  );
13
13
  ---
@@ -1,5 +1,4 @@
1
1
  ---
2
- import { getCollection, render } from 'astro:content';
3
2
  import AuthoredEntryLayout from '../../layouts/AuthoredEntryLayout.astro';
4
3
  import { resolveContributor, resolveReferences } from '../../utils/hub-content';
5
4
  import PublishedContentBody from '../../components/site/PublishedContentBody.astro';
@@ -16,15 +15,16 @@ export const prerender = false;
16
15
 
17
16
  const slug = String(Astro.params.slug ?? '');
18
17
  const publishedRuntime = isPublishedRuntimeContentMode();
19
- const objectives = publishedRuntime ? [] : await getCollection('objectives', ({ data }) => !data.draft);
20
- const localObjective = publishedRuntime ? null : objectives.find((candidate) => candidate.id === slug) ?? null;
18
+ const contentApi = publishedRuntime ? null : await import('astro:content');
19
+ const objectives = contentApi ? await contentApi.getCollection('objectives', ({ data }) => !data.draft) : [];
20
+ const localObjective = contentApi ? objectives.find((candidate) => candidate.id === slug) ?? null : null;
21
21
  const publishedObjective = publishedRuntime ? await loadPublishedEntry(Astro.locals, 'objectives', slug) : null;
22
22
  const objective = publishedRuntime ? publishedObjective?.entry ?? null : localObjective;
23
23
  const metadata = publishedRuntime ? metadataFromPublishedContent(publishedObjective?.content) : null;
24
24
  if (!objective) {
25
25
  Astro.response.status = 404;
26
26
  }
27
- const rendered = !publishedRuntime && localObjective ? await render(localObjective) : null;
27
+ const rendered = contentApi && localObjective ? await contentApi.render(localObjective) : null;
28
28
  const Content = rendered?.Content ?? null;
29
29
  const contributor = publishedRuntime
30
30
  ? await resolvePublishedContributor(Astro.locals, metadata?.primaryContributor)
@@ -1,5 +1,4 @@
1
1
  ---
2
- import { getCollection, render } from 'astro:content';
3
2
  import ProfileLayout from '../../layouts/ProfileLayout.astro';
4
3
  import { resolveReferences } from '../../utils/hub-content';
5
4
  import PublishedContentBody from '../../components/site/PublishedContentBody.astro';
@@ -10,15 +9,16 @@ export const prerender = false;
10
9
 
11
10
  const slug = String(Astro.params.slug ?? '');
12
11
  const publishedRuntime = isPublishedRuntimeContentMode();
13
- const people = publishedRuntime ? [] : await getCollection('people');
14
- const localPerson = publishedRuntime ? null : people.find((candidate) => candidate.id === slug) ?? null;
12
+ const contentApi = publishedRuntime ? null : await import('astro:content');
13
+ const people = contentApi ? await contentApi.getCollection('people') : [];
14
+ const localPerson = contentApi ? people.find((candidate) => candidate.id === slug) ?? null : null;
15
15
  const publishedPerson = publishedRuntime ? await loadPublishedEntry(Astro.locals, 'people', slug) : null;
16
16
  const person = publishedRuntime ? publishedPerson?.entry ?? null : localPerson;
17
17
  const metadata = publishedRuntime ? metadataFromPublishedContent(publishedPerson?.content) : null;
18
18
  if (!person) {
19
19
  Astro.response.status = 404;
20
20
  }
21
- const rendered = !publishedRuntime && localPerson ? await render(localPerson) : null;
21
+ const rendered = contentApi && localPerson ? await contentApi.render(localPerson) : null;
22
22
  const Content = rendered?.Content ?? null;
23
23
  const relatedQuestions = publishedRuntime
24
24
  ? await resolvePublishedReferences(Astro.locals, 'questions', metadata?.relatedQuestions)
@@ -1,11 +1,13 @@
1
1
  ---
2
- import { getCollection } from 'astro:content';
3
2
  import MainLayout from '../../layouts/MainLayout.astro';
4
3
  import SectionIntro from '../../components/site/SectionIntro.astro';
5
4
  import ProfileList from '../../components/site/ProfileList.astro';
6
5
  import { isPublishedRuntimeContentMode, loadPublishedCollection } from '../../utils/site-content-runtime';
7
6
 
8
- const people = isPublishedRuntimeContentMode() ? await loadPublishedCollection(Astro.locals, 'people') : await getCollection('people');
7
+ const publishedRuntime = isPublishedRuntimeContentMode();
8
+ const people = publishedRuntime
9
+ ? await loadPublishedCollection(Astro.locals, 'people')
10
+ : await (await import('astro:content')).getCollection('people');
9
11
  ---
10
12
 
11
13
  <MainLayout title="People" description="Human contributors participating in the TreeSeed working site." currentPath="/people/">
@@ -1,5 +1,4 @@
1
1
  ---
2
- import { getCollection, render } from 'astro:content';
3
2
  import AuthoredEntryLayout from '../../layouts/AuthoredEntryLayout.astro';
4
3
  import { resolveContributor, resolveReferences } from '../../utils/hub-content';
5
4
  import PublishedContentBody from '../../components/site/PublishedContentBody.astro';
@@ -16,15 +15,16 @@ export const prerender = false;
16
15
 
17
16
  const slug = String(Astro.params.slug ?? '');
18
17
  const publishedRuntime = isPublishedRuntimeContentMode();
19
- const proposals = publishedRuntime ? [] : await getCollection('proposals', ({ data }) => !data.draft);
20
- const localProposal = publishedRuntime ? null : proposals.find((candidate) => candidate.id === slug) ?? null;
18
+ const contentApi = publishedRuntime ? null : await import('astro:content');
19
+ const proposals = contentApi ? await contentApi.getCollection('proposals', ({ data }) => !data.draft) : [];
20
+ const localProposal = contentApi ? proposals.find((candidate) => candidate.id === slug) ?? null : null;
21
21
  const publishedProposal = publishedRuntime ? await loadPublishedEntry(Astro.locals, 'proposals', slug) : null;
22
22
  const proposal = publishedRuntime ? publishedProposal?.entry ?? null : localProposal;
23
23
  const metadata = publishedRuntime ? metadataFromPublishedContent(publishedProposal?.content) : null;
24
24
  if (!proposal) {
25
25
  Astro.response.status = 404;
26
26
  }
27
- const rendered = !publishedRuntime && localProposal ? await render(localProposal) : null;
27
+ const rendered = contentApi && localProposal ? await contentApi.render(localProposal) : null;
28
28
  const Content = rendered?.Content ?? null;
29
29
  const contributor = publishedRuntime
30
30
  ? await resolvePublishedContributor(Astro.locals, metadata?.primaryContributor)
@@ -1,5 +1,4 @@
1
1
  ---
2
- import { getCollection, render } from 'astro:content';
3
2
  import AuthoredEntryLayout from '../../layouts/AuthoredEntryLayout.astro';
4
3
  import { resolveContributor, resolveReferences } from '../../utils/hub-content';
5
4
  import PublishedContentBody from '../../components/site/PublishedContentBody.astro';
@@ -16,15 +15,16 @@ export const prerender = false;
16
15
 
17
16
  const slug = String(Astro.params.slug ?? '');
18
17
  const publishedRuntime = isPublishedRuntimeContentMode();
19
- const questions = publishedRuntime ? [] : await getCollection('questions', ({ data }) => !data.draft);
20
- const localQuestion = publishedRuntime ? null : questions.find((candidate) => candidate.id === slug) ?? null;
18
+ const contentApi = publishedRuntime ? null : await import('astro:content');
19
+ const questions = contentApi ? await contentApi.getCollection('questions', ({ data }) => !data.draft) : [];
20
+ const localQuestion = contentApi ? questions.find((candidate) => candidate.id === slug) ?? null : null;
21
21
  const publishedQuestion = publishedRuntime ? await loadPublishedEntry(Astro.locals, 'questions', slug) : null;
22
22
  const question = publishedRuntime ? publishedQuestion?.entry ?? null : localQuestion;
23
23
  const metadata = publishedRuntime ? metadataFromPublishedContent(publishedQuestion?.content) : null;
24
24
  if (!question) {
25
25
  Astro.response.status = 404;
26
26
  }
27
- const rendered = !publishedRuntime && localQuestion ? await render(localQuestion) : null;
27
+ const rendered = contentApi && localQuestion ? await contentApi.render(localQuestion) : null;
28
28
  const Content = rendered?.Content ?? null;
29
29
  const contributor = publishedRuntime
30
30
  ? await resolvePublishedContributor(Astro.locals, metadata?.primaryContributor)
@@ -1,9 +1,12 @@
1
- import { getCollection, getEntries, getEntry } from "astro:content";
2
1
  import { siteModelRendered } from "./site-models.js";
3
2
  function sortEntriesByDateDescending(entries) {
4
3
  return [...entries].sort((left, right) => right.data.date.valueOf() - left.data.date.valueOf());
5
4
  }
5
+ async function contentApi() {
6
+ return import("astro:content");
7
+ }
6
8
  async function resolveContributor(reference) {
9
+ const { getEntry } = await contentApi();
7
10
  return getEntry(reference);
8
11
  }
9
12
  async function resolveContributorsForEntries(entries) {
@@ -11,54 +14,63 @@ async function resolveContributorsForEntries(entries) {
11
14
  return new Map(entries.map((entry, index) => [entry.id, contributors[index] ?? null]));
12
15
  }
13
16
  async function resolveReferences(references) {
17
+ const { getEntries } = await contentApi();
14
18
  return getEntries(references);
15
19
  }
16
20
  async function getPublishedQuestions() {
17
21
  if (!siteModelRendered("questions")) {
18
22
  return [];
19
23
  }
24
+ const { getCollection } = await contentApi();
20
25
  return sortEntriesByDateDescending(await getCollection("questions", ({ data }) => !data.draft));
21
26
  }
22
27
  async function getPublishedObjectives() {
23
28
  if (!siteModelRendered("objectives")) {
24
29
  return [];
25
30
  }
31
+ const { getCollection } = await contentApi();
26
32
  return sortEntriesByDateDescending(await getCollection("objectives", ({ data }) => !data.draft));
27
33
  }
28
34
  async function getPublishedProposals() {
29
35
  if (!siteModelRendered("proposals")) {
30
36
  return [];
31
37
  }
38
+ const { getCollection } = await contentApi();
32
39
  return sortEntriesByDateDescending(await getCollection("proposals", ({ data }) => !data.draft));
33
40
  }
34
41
  async function getPublishedDecisions() {
35
42
  if (!siteModelRendered("decisions")) {
36
43
  return [];
37
44
  }
45
+ const { getCollection } = await contentApi();
38
46
  return sortEntriesByDateDescending(await getCollection("decisions", ({ data }) => !data.draft));
39
47
  }
40
48
  async function getPublishedNotes() {
41
49
  if (!siteModelRendered("notes")) {
42
50
  return [];
43
51
  }
52
+ const { getCollection } = await contentApi();
44
53
  return sortEntriesByDateDescending(await getCollection("notes", ({ data }) => !data.draft));
45
54
  }
46
55
  async function getPublishedPeople() {
47
56
  if (!siteModelRendered("people")) {
48
57
  return [];
49
58
  }
59
+ const { getCollection } = await contentApi();
50
60
  return getCollection("people");
51
61
  }
52
62
  async function getPublishedAgents() {
53
63
  if (!siteModelRendered("agents")) {
54
64
  return [];
55
65
  }
66
+ const { getCollection } = await contentApi();
56
67
  return getCollection("agents");
57
68
  }
58
69
  async function getPublishedBooks() {
59
70
  if (!siteModelRendered("books")) {
60
71
  return [];
61
72
  }
73
+ const { getCollection } = await contentApi();
62
74
  return (await getCollection("books")).sort((a, b) => a.data.order - b.data.order);
63
75
  }
64
76
  export {
@@ -1,5 +1,21 @@
1
- import { tenantModelRendered } from "@treeseed/sdk/platform/tenant-config";
2
1
  import { RUNTIME_TENANT } from "../tenant/runtime-config.js";
2
+ const MODEL_FEATURE_MAP = {
3
+ docs: "docs",
4
+ books: "books",
5
+ notes: "notes",
6
+ questions: "questions",
7
+ objectives: "objectives",
8
+ proposals: "proposals",
9
+ decisions: "decisions",
10
+ agents: "agents"
11
+ };
12
+ function tenantModelRendered(tenantConfig, modelName) {
13
+ const featureName = MODEL_FEATURE_MAP[modelName];
14
+ if (featureName && tenantConfig.features?.[featureName] === false) {
15
+ return false;
16
+ }
17
+ return tenantConfig.site?.models?.[modelName]?.rendered !== false;
18
+ }
3
19
  function isSiteRenderedModel(tenantConfig, modelName) {
4
20
  return tenantModelRendered(tenantConfig, modelName);
5
21
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@treeseed/core",
3
- "version": "0.10.10",
3
+ "version": "0.10.11",
4
4
  "description": "Treeseed web framework package for Astro/Starlight site runtimes.",
5
5
  "license": "AGPL-3.0-only",
6
6
  "repository": {
@@ -70,7 +70,7 @@
70
70
  "@astrojs/sitemap": "3.7.0",
71
71
  "@astrojs/starlight": "0.37.6",
72
72
  "@tailwindcss/vite": "^4.1.4",
73
- "@treeseed/sdk": "github:treeseed-ai/sdk#0.10.16",
73
+ "@treeseed/sdk": "github:treeseed-ai/sdk#0.10.17",
74
74
  "astro": "^5.6.1",
75
75
  "esbuild": "^0.28.0",
76
76
  "katex": "^0.16.22",