Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,36 @@ body:
> Please file your issue at **[letta-ai/letta-code](https://github.com/letta-ai/letta-code/issues)** instead!
> This repository is for the core Letta server only.

- type: checkboxes
id: third-party-product
attributes:
label: Third-Party Product Disclosure
description: Select **exactly one** option. If this issue mentions a third-party product or service, disclose your relationship to it below.
options:
- label: This issue does not mention or promote a third-party product or service
- label: This issue mentions a third-party product or service, and I have disclosed my relationship to it below
validations:
required: true

- type: input
id: third-party-relationship
attributes:
label: Relationship to Third-Party Product or Service
description: State whether you are the creator, employee, contractor, investor, affiliate, sponsor, paid promoter, user, or customer. State `No relationship` if you are unaffiliated, or `Not applicable` if no third-party product or service is mentioned.
placeholder: "e.g. Creator, employee, affiliate, no relationship, or not applicable"
validations:
required: true

- type: checkboxes
id: anti-spam-acknowledgment
attributes:
label: Anti-Spam Acknowledgment
options:
- label: I understand that self-promotional spam, advertising, lead generation, affiliate or referral pitches, and deceptive disclosures will be reported to GitHub as spam, and the account will be blocked from this repository
required: true
validations:
required: true

- type: checkboxes
id: ai-disclosure
attributes:
Expand Down
30 changes: 30 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,36 @@ body:
> Please file your issue at **[letta-ai/letta-code](https://github.com/letta-ai/letta-code/issues)** instead!
> This repository is for the core Letta server only.

- type: checkboxes
id: third-party-product
attributes:
label: Third-Party Product Disclosure
description: Select **exactly one** option. If this issue mentions a third-party product or service, disclose your relationship to it below.
options:
- label: This issue does not mention or promote a third-party product or service
- label: This issue mentions a third-party product or service, and I have disclosed my relationship to it below
validations:
required: true

- type: input
id: third-party-relationship
attributes:
label: Relationship to Third-Party Product or Service
description: State whether you are the creator, employee, contractor, investor, affiliate, sponsor, paid promoter, user, or customer. State `No relationship` if you are unaffiliated, or `Not applicable` if no third-party product or service is mentioned.
placeholder: "e.g. Creator, employee, affiliate, no relationship, or not applicable"
validations:
required: true

- type: checkboxes
id: anti-spam-acknowledgment
attributes:
label: Anti-Spam Acknowledgment
options:
- label: I understand that self-promotional spam, advertising, lead generation, affiliate or referral pitches, and deceptive disclosures will be reported to GitHub as spam, and the account will be blocked from this repository
required: true
validations:
required: true

- type: checkboxes
id: ai-disclosure
attributes:
Expand Down
42 changes: 35 additions & 7 deletions .github/workflows/issue-guard.yml
Original file line number Diff line number Diff line change
Expand Up @@ -86,21 +86,47 @@ jobs:
failures.push('Missing exact repository acknowledgment phrase');
}

// Check 2: AI disclosure checkbox (the required one: "I have read the AI Policy")
// Check 2: Anti-spam acknowledgment checkbox
// YAML form checkboxes render as "- [x] text" when checked.
const antiSpamChecked = /- \[[xX]\] I understand that self-promotional spam, advertising, lead generation, affiliate or referral pitches, and deceptive disclosures will be reported to GitHub as spam, and the account will be blocked from this repository/.test(body);
if (!antiSpamChecked) {
failures.push('Anti-Spam Acknowledgment checkbox not checked');
}

// Check 3: Exactly one third-party product option must be checked
const noThirdPartyProduct = /- \[[xX]\] This issue does not mention or promote a third-party product or service/.test(body);
const hasThirdPartyProduct = /- \[[xX]\] This issue mentions a third-party product or service/.test(body);
if (noThirdPartyProduct === hasThirdPartyProduct) {
failures.push('Select exactly one Third-Party Product Disclosure option');
}

// Check 4: Third-party relationships must be disclosed
const relationshipMatch = body.match(/### Relationship to Third-Party Product or Service\s*\n+([\s\S]*?)(?=\n### |$)/i);
const relationship = (relationshipMatch?.[1] || '').trim();
const noRelationshipResponse = !relationship || /^_?no response_?$/i.test(relationship);
const notApplicable = /^(not applicable|n\/a)\.?$/i.test(relationship);
if (noRelationshipResponse) {
failures.push('Relationship to Third-Party Product or Service is required');
} else if (hasThirdPartyProduct && notApplicable) {
failures.push('Issues mentioning a third-party product or service must disclose the author鈥檚 relationship to it');
} else if (noThirdPartyProduct && !notApplicable) {
failures.push('Issues that do not mention a third-party product or service must state Not applicable under Relationship');
}

// Check 5: AI disclosure checkbox (the required one: "I have read the AI Policy")
const aiPolicyChecked = /- \[[xX]\] I have read the \[AI Policy\]/.test(body);
if (!aiPolicyChecked) {
failures.push('AI Policy acknowledgment checkbox not checked');
}

// Check 3: Exactly one authorship option must be checked
// Check 6: Exactly one authorship option must be checked
const humanWritten = /- \[[xX]\] This issue was written entirely by a human/.test(body);
const aiAssisted = /- \[[xX]\] This issue was written with AI assistance/.test(body);
if (humanWritten === aiAssisted) {
failures.push('Select exactly one authorship option (human-written or AI-assisted)');
}

// Check 4: AI tools must be explicitly disclosed. GitHub issue forms render
// Check 7: AI tools must be explicitly disclosed. GitHub issue forms render
// input values under a level-three Markdown heading.
const aiToolsMatch = body.match(/### AI Tool\(s\) Used\s*\n+([\s\S]*?)(?=\n### |$)/i);
const aiTools = (aiToolsMatch?.[1] || '').trim();
Expand Down Expand Up @@ -129,10 +155,12 @@ jobs:
``,
`**To submit an issue, please:**`,
`1. Use one of the [issue templates](https://github.com/${context.repo.owner}/${context.repo.repo}/issues/new/choose)`,
`2. Select exactly one **AI Disclosure** authorship option`,
`3. Name every AI tool used, or state **None**`,
`4. Copy the **Repository Acknowledgment** phrase exactly as shown`,
`5. Read our [AI Policy](https://github.com/${context.repo.owner}/${context.repo.repo}/blob/main/AI_POLICY.md) and [AGENTS.md](https://github.com/${context.repo.owner}/${context.repo.repo}/blob/main/AGENTS.md)`,
`2. Complete the **Third-Party Product Disclosure** and relationship field`,
`3. Accept the **Anti-Spam Acknowledgment**`,
`4. Select exactly one **AI Disclosure** authorship option`,
`5. Name every AI tool used, or state **None**`,
`6. Copy the **Repository Acknowledgment** phrase exactly as shown`,
`7. Read our [AI Policy](https://github.com/${context.repo.owner}/${context.repo.repo}/blob/main/AI_POLICY.md) and [AGENTS.md](https://github.com/${context.repo.owner}/${context.repo.repo}/blob/main/AGENTS.md)`,
``,
`If you believe this was a mistake, please reach out on [Discord](https://discord.gg/9GEQrxmVyE).`,
].join('\n');
Expand Down
2 changes: 2 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,3 +17,5 @@ If you are an agent working here, you most likely want one of these instead:

- New features and integrations should target [letta-ai/letta-code](https://github.com/letta-ai/letta-code) and the [Letta Agent SDK](https://docs.letta.com/letta-agent-sdk/overview), not this codebase.
- All contributions (issues, PRs, discussions) must comply with the [AI usage policy](AI_POLICY.md): AI assistance must be disclosed, and a human must fully understand and review everything submitted.
- Do not use issues, pull requests, or discussions to advertise a product or service, generate leads, promote referral or affiliate links, or send other unsolicited commercial pitches. Self-promotional spam will be reported to GitHub, and the account will be blocked from this repository.
- If a legitimate issue mentions a third-party product or service, disclose your relationship to it, including whether you are its creator, employee, contractor, investor, affiliate, sponsor, or paid promoter. Hiding or misrepresenting that relationship will be treated as spam.
Loading