Skip to content

Commit c650a60

Browse files
authored
Merge pull request #2944 from protoLabsAI/staging
Promote staging to main (v0.79.0)
2 parents fe65065 + 08df70c commit c650a60

File tree

128 files changed

+5287
-7170
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

128 files changed

+5287
-7170
lines changed

.automaker/settings.json

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
{
2+
"version": 1,
3+
"worktreePanelVisible": false,
4+
"gtmEnabled": true,
5+
"integrations": {
6+
"linear": {
7+
"teamId": "185e7caa-2855-4c67-a347-2011016bdddf"
8+
},
9+
"discord": {
10+
"enabled": true,
11+
"serverId": "1070606339363049492",
12+
"channelId": "1469080556720623699",
13+
"createThreadsForAgents": true,
14+
"notifyOnCompletion": true,
15+
"notifyOnError": true,
16+
"notifyOnAutoModeComplete": true,
17+
"useWebhook": false,
18+
"channels": {
19+
"primary": "1469195643590541353",
20+
"dev": "1469080556720623699",
21+
"infra": "1469109809939742814",
22+
"bugs": "1477837770704814162",
23+
"ceremonies": "1469080556720623699",
24+
"contentBriefs": "1472072098238431342"
25+
},
26+
"channelWorkflows": [
27+
{
28+
"channelId": "1477837770704814162",
29+
"channelName": "#bug-reports",
30+
"workflow": "bug_triage",
31+
"createThread": true,
32+
"aiInvestigation": true,
33+
"enabled": true
34+
},
35+
{
36+
"channelId": "1469195643590541353",
37+
"channelName": "#ava",
38+
"workflow": "agent_conversation",
39+
"agentRole": "ava",
40+
"createThread": false,
41+
"aiInvestigation": false,
42+
"enabled": true
43+
}
44+
]
45+
}
46+
},
47+
"ceremonySettings": {
48+
"enabled": true,
49+
"enableMilestoneUpdates": true,
50+
"enableProjectRetros": true,
51+
"enableStandups": true,
52+
"enableEpicKickoff": true,
53+
"enableEpicDelivery": true,
54+
"enableContentBriefs": true,
55+
"discordChannelId": "1469080556720623699"
56+
},
57+
"defaultDeleteBranch": true,
58+
"enabledPersonas": [
59+
"board-janitor",
60+
"backend-engineer",
61+
"matt",
62+
"sam",
63+
"kai",
64+
"frank",
65+
"product-manager",
66+
"engineering-manager",
67+
"ava",
68+
"cindi",
69+
"linear-specialist",
70+
"jon",
71+
"calendar-assistant",
72+
"pr-maintainer"
73+
],
74+
"boardBackground": {
75+
"imagePath": null,
76+
"cardOpacity": 100,
77+
"columnOpacity": 100,
78+
"columnBorderEnabled": true,
79+
"cardGlassmorphism": true,
80+
"cardBorderEnabled": true,
81+
"cardBorderOpacity": 100,
82+
"hideScrollbar": false,
83+
"imageVersion": 1772603872769
84+
},
85+
"workflow": {
86+
"agentConfig": {
87+
"autoAssignEnabled": true
88+
},
89+
"gitWorkflow": {
90+
"prBaseBranch": "dev"
91+
}
92+
},
93+
"docsPath": "docs/internal"
94+
}

apps/server/package.json

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@protolabsai/server",
3-
"version": "0.77.6",
3+
"version": "0.79.0",
44
"description": "Backend server for protoLabs Studio - provides API for both web and Electron modes",
55
"author": "protoLabs Studio",
66
"license": "SEE LICENSE IN LICENSE",
@@ -45,19 +45,19 @@
4545
"@opentelemetry/exporter-trace-otlp-http": "^0.212.0",
4646
"@opentelemetry/sdk-node": "^0.212.0",
4747
"@opentelemetry/sdk-trace-base": "^2.0.0",
48-
"@protolabsai/context-engine": "^0.68.9",
49-
"@protolabsai/dependency-resolver": "^0.77.6",
50-
"@protolabsai/error-tracking": "^0.53.24",
51-
"@protolabsai/flows": "^0.77.6",
52-
"@protolabsai/git-utils": "^0.77.6",
53-
"@protolabsai/model-resolver": "^0.77.6",
54-
"@protolabsai/observability": "^0.77.6",
55-
"@protolabsai/platform": "^0.77.6",
56-
"@protolabsai/prompts": "^0.77.6",
48+
"@protolabsai/context-engine": "^0.68.11",
49+
"@protolabsai/dependency-resolver": "^0.79.0",
50+
"@protolabsai/error-tracking": "^0.53.26",
51+
"@protolabsai/flows": "^0.79.0",
52+
"@protolabsai/git-utils": "^0.79.0",
53+
"@protolabsai/model-resolver": "^0.79.0",
54+
"@protolabsai/observability": "^0.79.0",
55+
"@protolabsai/platform": "^0.79.0",
56+
"@protolabsai/prompts": "^0.79.0",
5757
"@protolabsai/templates": "^0.56.0",
58-
"@protolabsai/tools": "^0.77.6",
59-
"@protolabsai/types": "^0.77.6",
60-
"@protolabsai/utils": "^0.77.6",
58+
"@protolabsai/tools": "^0.79.0",
59+
"@protolabsai/types": "^0.79.0",
60+
"@protolabsai/utils": "^0.79.0",
6161
"@twurple/api": "^8.0.3",
6262
"@twurple/auth": "^8.0.3",
6363
"@twurple/chat": "^8.0.3",

apps/server/src/lib/git-staging-utils.ts

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,27 +16,49 @@ import { join } from 'path';
1616
*/
1717
export const DEFAULT_STAGING_EXCLUSIONS = ['.automaker/', '.claude/worktrees/', '.worktrees/'];
1818

19+
/**
20+
* Directories that are already excluded by `.gitignore`.
21+
* Using `:!dir/` pathspec exclusions for gitignored directories causes git to
22+
* error: "The following paths are ignored by one of your .gitignore files: dir"
23+
* These entries should still appear in `excludeFromStaging` to signal that
24+
* their subdirectories (e.g. `.automaker/memory/`) may need re-inclusion,
25+
* but they must NOT be emitted as pathspec arguments.
26+
*/
27+
const GITIGNORE_MANAGED_EXCLUSIONS = new Set(['.automaker/', '.worktrees/']);
28+
1929
/**
2030
* Builds a git add command that stages all changes except the directories in
2131
* `excludeFromStaging`, then re-includes `.automaker/memory/` and
2232
* `.automaker/skills/` only if `.automaker/` is excluded and those directories
2333
* exist in the working tree. This prevents a fatal pathspec error when a
2434
* directory is absent (e.g. in a fresh worktree).
35+
*
36+
* Directories already covered by `.gitignore` are intentionally omitted from
37+
* the pathspec exclusion list — git would throw an error if a gitignored path
38+
* appeared in the pathspec (even as a `:!` exclude).
2539
*/
2640
export function buildGitAddCommand(workDir: string, excludeFromStaging?: string[]): string {
2741
const exclusions = excludeFromStaging ?? DEFAULT_STAGING_EXCLUSIONS;
28-
const exclusionPathspecs = exclusions.map((dir) => `':!${dir}'`).join(' ');
29-
const parts = [`git add -A -- ${exclusionPathspecs}`];
3042

31-
// Re-include .automaker/memory/ and .automaker/skills/ when .automaker/ is excluded
43+
// Collect all pathspec arguments into one array, then join at the end.
44+
// Only emit exclusion pathspecs for dirs NOT already handled by .gitignore:
45+
// using `:!dir/` for a gitignored path causes:
46+
// fatal: The following paths are ignored by one of your .gitignore files: dir
47+
const pathspecArgs: string[] = exclusions
48+
.filter((dir) => !GITIGNORE_MANAGED_EXCLUSIONS.has(dir))
49+
.map((dir) => `':!${dir}'`);
50+
51+
// Re-include .automaker/memory/ and .automaker/skills/ when .automaker/ is excluded.
52+
// These subdirs are git-tracked agent memory files that live under a gitignored
53+
// parent directory and must be staged explicitly.
3254
if (exclusions.includes('.automaker/')) {
3355
if (existsSync(join(workDir, '.automaker/memory'))) {
34-
parts.push("'.automaker/memory/'");
56+
pathspecArgs.push("'.automaker/memory/'");
3557
}
3658
if (existsSync(join(workDir, '.automaker/skills'))) {
37-
parts.push("'.automaker/skills/'");
59+
pathspecArgs.push("'.automaker/skills/'");
3860
}
3961
}
4062

41-
return parts.join(' ');
63+
return `git add -A -- ${pathspecArgs.join(' ')}`;
4264
}

apps/server/src/lib/settings-helpers.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -801,6 +801,7 @@ export async function getWorkflowSettings(
801801
...DEFAULT_WORKFLOW_SETTINGS.gitWorkflow,
802802
...projectSettings.workflow.gitWorkflow,
803803
},
804+
ciClassification: projectSettings.workflow.ciClassification,
804805
};
805806
}
806807
return DEFAULT_WORKFLOW_SETTINGS;

0 commit comments

Comments
 (0)